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

Pause jQuery ready events until multiple HTML DOM updates are finished

本文关键字:HTML DOM 更新 就绪 jQuery 事件 暂停      更新时间:2023-09-26

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

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

有办法吗?

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

看看holdReady函数

见:http://api.jquery.com/jQuery.holdReady/

我会首先移动的js你有在你的视图到外部的js文件,他们可以从ajax回调函数调用。

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

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

Rebecca Murphy写了一些关于这个的非常好的文章/演讲。