暂停jQuery就绪事件,直到多个HTML DOM更新完成
Pause jQuery ready events until multiple HTML DOM updates are finished
我使用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写了一些关于这个的非常好的文章/演讲。
相关文章:
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 如何序列化包括影子 DOM 在内的 HTML DOM
- 通过Java加载XML并制作HTML DOM的一部分
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- HTML DOM Text() nodes
- 递归单步执行 HTML DOM 并打印属性
- 从自身获取对脚本作为 HTML DOM 元素的引用
- 我可以将 HTML 字符串分配给 HTML DOM 节点的内部 HTML 属性吗?
- Javascript HTML DOM select
- 如何反转 JavaScript 变量中 HTML DOM 元素的顺序
- 在 HTML DOM 元素下添加 javascript 文件或 css 文件
- HTML DOM - element.appendChild() 的行为不像我期望的那样
- HTML DOM 使用 AngularJS ng-if 函数
- PHP 简单 HTML DOM 和下拉元素已选选项
- 将 HTML DOM 保存到服务器上的文件
- 为什么我的 HTML 按钮刷新页面?/为什么我不能让我的新 HTML DOM 元素插入到我的页面中
- 节点上的 d3 事件处理程序不在 HTML DOM 中
- 如何转换 HTML DOM 结构
- HTML/DOM:鼠标事件更改按钮
- HTML DOM alerting style.width