jQuery - livequery 插件帮助
Posted
技术标签:
【中文标题】jQuery - livequery 插件帮助【英文标题】:jQuery - livequery plugin help 【发布时间】:2010-12-07 03:58:06 【问题描述】:当用户更改单选按钮时,我将更新消息添加为表格行。我遇到了这样一个事实,即一旦添加了消息,它就没有我认为的功能,因为它是在页面加载后添加的。然后我发现 livequery 插件似乎允许事后添加的元素具有与页面加载的元素相同的功能。
我的 click fadeout() 工作正常,但我似乎无法弄清楚刚刚添加的表格行上的 setTimeout() 语法。我知道当前的语法不正确,所以我把它留在了我感到沮丧的地方。
<script>
$(document).ready(function()
$("input[@name='optInOut']").change(function()
$('#tblUpdates').append('<tr class="msgUpdate"><td colspan="2">added message0</td><td align="right"><img src="../Images/CCC/12-em-cross.png" class="imgClose" title="close message" /></td></tr>');
);
setTimeout($.livequery.function()
$('.msgUpdate').fadeOut('normal');
, 1000); // <-- time in milliseconds
);
$('img.imgClose').livequery('click', function()
$(this).parent().parent().fadeOut('normal');
);
</script>
如果我需要提供更多信息,我会尽力提供,并提前感谢您的帮助。
【问题讨论】:
我可以一起删除 setTimeout() 部分。我会让用户自己关闭消息。感谢大家的帮助。 【参考方案1】:首先在这里
$('img.imgClose').livequery('click', function()
$(this).parent().parent().fadeOut('normal');
);
</script>
应该是
$('img.imgClose').livequery('click', function()
$(this).parent().parent().fadeOut('normal');
);//<--- closes the livequery call
);//<--- closes document.ready
</script>
其次,我建议不要使用 livequery 来实现淡出,但如果您要使用它,请使用以下语法:
setTimeout($.livequery.function()
$('.msgUpdate').fadeOut('normal');
, 1000); // <-- time in milliseconds
);
应该是:
$.livequery(function()
setTimeout(function()
$('.msgUpdate').fadeOut('normal');
,1000);
);
【讨论】:
【参考方案2】:你不需要调用window.setTimeout 吗?我不确定这是否有必要,但可能值得一试。
【讨论】:
【参考方案3】:使用最新版本的 jQuery (1.3.X),您无需使用 livequery 插件。你可以使用 $("div").live("click",etc....
我认为,如果您查看 jQuery 的新实时功能,您可能能够清理您的 javascript,以便更易于理解。
【讨论】:
我不确定当前 1.3.x 版本的 jQuery 是否会导致我们当前使用的代码出现任何问题。我们使用的是 1.2.6,因为这是最初开发网站时的版本。【参考方案4】:如果 setTimeout 的目标是淡化页面加载时存在的元素,那么您不需要涉及 livequery
setTimeout("$('.msgUpdate').fadeOut('normal');", 1000);
【讨论】:
以上是关于jQuery - livequery 插件帮助的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 1.7+ 中等效的 jQuery livequery 插件