暂停jQuery就绪事件,直到完成多个HTML DOM更新

时间:2011-07-11 22:00:29

标签: javascript jquery ready

我正在使用jQuery来提交AJAX并接收包含多个DOM ID和我需要更新的相应HTML片段的JSON回复。因此,我会进行多次jQuery.html调用,例如$('#id1').html('...'); $('#id2').html('...');

对于包含ready处理程序(如$(function(){...});)的每个片段,都会立即触发该事件。所有更新完成后,我宁愿调用一次。

有没有办法做到这一点?

从我到目前为止所读到的内容,a jQuery.trigger()可用于手动触发ready事件。但我需要通过以某种方式覆盖jQuery内部来保存和恢复当前的处理程序或推迟事件传递。后者是我想避免的,也许还有一些我还不知道的最佳实践?

2 个答案:

答案 0 :(得分:2)

查看holdReady功能。

请参阅:http://api.jquery.com/jQuery.holdReady/

答案 1 :(得分:1)

我首先将您在视图中使用的js移动到外部js文件中,在这些文件中可以从ajax回调函数调用它们。

当您发现页内准备好的事件时,很快就会让您感到失控并变得非常难以维护。重新获得控制权,将你的js命名为逻辑部分并失去现成的依赖。

如果在结束体标记之前包含js,则不需要ready语句。我可以给出的最好的建议是在你的应用程序生命周期中开始明确js被调用的时候,而不是依赖于被滥用的ready语句。

Rebecca Murphy撰写了一些非常好的文章/ presentations