0

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

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

有没有办法做到这一点?

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

4

2 回答 2

2

看看holdReady功能。

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

于 2011-07-11T22:09:38.953 回答
1

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

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

如果您在结束正文标记之前包含您的 js,则不需要准备好的语句。我能给出的最好建议是开始在你的应用程序生命周期中明确说明何时调用 js,而不是依赖过度滥用的 ready 语句。

Rebecca Murphy 写了一些非常好的文章/演示文稿

于 2011-07-11T22:09:51.587 回答