我正在使用jQuery来提交AJAX并接收包含多个DOM ID和我需要更新的相应HTML片段的JSON回复。因此,我会进行多次jQuery.html
调用,例如$('#id1').html('...'); $('#id2').html('...');
。
对于包含ready
处理程序(如$(function(){...});
)的每个片段,都会立即触发该事件。所有更新完成后,我宁愿调用一次。
有没有办法做到这一点?
从我到目前为止所读到的内容,a jQuery.trigger()可用于手动触发ready
事件。但我需要通过以某种方式覆盖jQuery内部来保存和恢复当前的处理程序或推迟事件传递。后者是我想避免的,也许还有一些我还不知道的最佳实践?
答案 0 :(得分:2)
查看holdReady
功能。
答案 1 :(得分:1)
我首先将您在视图中使用的js移动到外部js文件中,在这些文件中可以从ajax回调函数调用它们。
当您发现页内准备好的事件时,很快就会让您感到失控并变得非常难以维护。重新获得控制权,将你的js命名为逻辑部分并失去现成的依赖。
如果在结束体标记之前包含js,则不需要ready语句。我可以给出的最好的建议是在你的应用程序生命周期中开始明确js被调用的时候,而不是依赖于被滥用的ready语句。
Rebecca Murphy撰写了一些非常好的文章/ presentations。