我们首先做代码:修改DOM后如何确保DOM已准备好再次
$(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);
});
远程template2.htm: -
<div id="prodBasicView" style="display:none;">
<div class="myProd">
<h3> Product Name</h3>
<span>Price: $ 700 </span>
</div>
</div>
问题:
- loadTemplate方法成功加载模板(remote-template2.htm)并追加到body。
- 成功加载模板后,传递回调函数showProduct方法被解雇。
- Inside showProduct method我试图使用加载的模板($('#prodBasicView')),但它返回空数组。
- 但如果我耽误显示产品很少毫秒的执行它的工作原理,但我不认为这是一个很好的做法
上述观点似乎是追加的DOM元素都没有准备好
如何在使用前修改DOM/MANIPULATED DOM?
是回调从'$ .get'回调使用JavaScript的应用** **方法 – 2012-08-09 05:16:47
@LPremchandra调用:我怕我不明白您的评论。我提供的代码有问题吗?在你原来的代码中,'if(callback!='...行在$ .get'函数的回调之外;通过将它放在里面,我确保它不会被调用,直到回调函数完成(也就是说,在'$('body')。append(t);'call)之后。 – KRyan 2012-08-09 05:19:39
:) Thanks Dragoon Wraith。我在想,我的回调是在'$ .get'回调中。这是我的代码中的错误,但理解是正确的。 **非常感谢** – 2012-08-09 05:26:04