如果在网页中我在初始页面加载和DOM就绪事件之后加载了一些内容,那么插入的节点何时“准备好”,在计算其大小的意义上,考虑CSS规则并且所有?
$.ajax({
url: ajaxUrl,
success: function (data) {
var page = $(data).find('.page').first();
page.appendTo(pages_container);
// if I try to get the width of an element here, I get 0
console.log(page.width()); // -> 0
// but if I do it, let's say 500ms later, now it is computed
setTimeout(function () {
console.log(page.width()); // -> correct width, non zero
}, 500);
}
});
是否存在任何类型的事件,例如“在插入的dom ready上”或者能够执行函数之后计算了ajax插入内容的大小/布局?
答案 0 :(得分:0)
您的问题不应该在您勾勒出来时发生。将元素添加到页面中不是异步操作。 Javascript DOM操作不是多线程的。它只是在应用DOM更改后返回。
只要你的追加完成(包括尺寸属性),DOM 就可以准备好使用了:
page.appendTo(pages_container);
通常的原因是在插入jQuery对象之前访问属性,或者新的jQuery对象在视觉上被隐藏并稍后显示(fadein等),但我看到代码中没有转换。