修改 DOM 后如何确保 DOM 再次准备就绪
After modifying DOM how to make sure that DOM is ready again
让我们先做代码:
$(function(){
//Step-2) Load and a template from server and APPEND to BODY
function loadTemplate(path, callback) {
$.get(path, null, function (t) {
$('body').append(t);
}, 'text');
if (callback != undefined && typeof (callback) == 'function') {
callback.apply(window);
}
}
//Step-3) a callback method
function showProduct() {
//setTimeout(function () {
// $('#prodBasicView').tmpl(prod).appendTo('#prodView');
//}, 100);
alert($('#prodBasicView').length); // it alerts 0, But I am expecting 1
}
//Step-1) initiating loading template
loadTemplate('/template/remote-template2.htm', showProduct);
});
远程模板2.htm :-
<div id="prodBasicView" style="display:none;">
<div class="myProd">
<h3> Product Name</h3>
<span>Price: $ 700 </span>
</div>
</div>
问题:
- loadTemplate 方法成功加载模板(远程模板 2.htm)并追加到正文。
- 成功加载模板后,传递的回调函数 showProduct 方法被触发。
- 在 showProduct 方法中,我正在尝试使用加载的模板 ($('#prodBasicView')),但它返回空数组。
- 但是如果我将 showProduct 的执行延迟几毫秒,它可以工作,但我认为这不是一个好的做法
以上一点似乎附加了DOM元素还没有准备好
在使用它们之前,如何确保修改/操作的 DOM 再次准备就绪?
在我看来
,您只需要将回调调用代码放在$.get
回调中,如下所示:
function loadTemplate(path, callback) {
$.get(path, null, function (t) {
$('body').append(t);
if (callback != undefined && typeof (callback) == 'function') {
callback.apply(window);
}
}, 'text');
}
在 ajax 回调处理程序中执行callback
。(因为 ajax 异步工作)
function loadTemplate(path, callback) {
$.get(path, null, function (t) {
$('body').append(t);
if (callback != undefined && typeof (callback) == 'function') {
callback.apply(window);
}
}, 'text');
}
相关文章:
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- IIFE jquery已准备就绪
- 准备就绪时的随机背景
- Javascript/Css导航未显示在jquery文档上,仅在ie中准备就绪
- 在页面上加载高级jQuery版本准备就绪
- 修改 DOM 后如何确保 DOM 再次准备就绪
- 可以't将属性src设置为null,即使DOM已准备就绪
- 当文档准备就绪时,将数据从一个文本框复制到另一个
- 电话间隙设备准备就绪,5秒钟后未启动
- 在 DOM 准备就绪之前附加类
- angularJS:等待ng-if完成,以确保DOM准备就绪
- 在页面加载之前捕获点击事件,并在 DOM 准备就绪后触发
- Google Analytics 和 DOM 准备就绪
- 在 YUI 中的 onDomReady 在 DOM 似乎准备就绪之前触发
- 当 DOM 准备就绪时,使用 js 加载引导选项卡代码
- 通过jquery/Javascript大量添加新元素后,DOM是否立即准备就绪
- 如何使用JavaScript检查DOM是否准备就绪
- 在JQuery中,我如何检查DOM是否准备就绪
- 在从ajax添加节点后,如何知道DOM何时准备就绪
- 检查给定的DOM元素是否准备就绪