在 jQuery.after 之后 DOM 什么时候准备好 - Plupload
When is DOM ready following jQuery.after - Plupload
短版
在调用 jQuery.after
插入 HTML 后,我如何知道 DOM 何时准备好?
长版
我从 ajax 调用中获取 Plupload dropzones 并使用 jQuery.after 插入它们。当我然后调用 mypluploader.init()
来初始化 Plupload 时,由于 DOM 没有准备好(显然),它失败了。这是我正在做的事情:
- 我加载页面
- 用户点击编辑
- 我使用 ajax 获取 Plupload 区域并插入返回的 HTML 和 jQuery.after
- 然后我调用
mypluploader.init()
来初始化Plupload
- 我收到以下错误:
TypeError: Cannot read property 'style' of null
代码总结:
$.get('/plupload-zones.html', function(theDropZoneHTML) {
// theDropZoneHTML: <div id='dropzones'>...</div>
obj.after(theDropZoneHTML);
mypluploader = new plupload.Uploader({..., drop_element: 'dropzones', ...});
mypluploader.init();
//Boom! It fails
});
如果我将第 4 步更改为包含 2 秒的 setTimeout,它可以正常工作,没有错误:
$.get('/plupload-zones.html', function(theDropZoneHTML) {
// theDropZoneHTML: <div id='dropzones'>...</div>
obj.after(theDropZoneHTML);
setTimeout(function() {
mypluploader = new plupload.Uploader({..., drop_element: 'dropzones', ...});
mypluploader.init();
//Bingo! It works
}, 2000);
});
啊哈,延迟来自页面上的 Angular 转发器。等待 Angular 重复完成解决问题:ng-repeat finish event
短版
在调用 jQuery.after
插入 HTML 后,我如何知道 DOM 何时准备好?
长版
我从 ajax 调用中获取 Plupload dropzones 并使用 jQuery.after 插入它们。当我然后调用 mypluploader.init()
来初始化 Plupload 时,由于 DOM 没有准备好(显然),它失败了。这是我正在做的事情:
- 我加载页面
- 用户点击编辑
- 我使用 ajax 获取 Plupload 区域并插入返回的 HTML 和 jQuery.after
- 然后我调用
mypluploader.init()
来初始化Plupload - 我收到以下错误:
TypeError: Cannot read property 'style' of null
代码总结:
$.get('/plupload-zones.html', function(theDropZoneHTML) {
// theDropZoneHTML: <div id='dropzones'>...</div>
obj.after(theDropZoneHTML);
mypluploader = new plupload.Uploader({..., drop_element: 'dropzones', ...});
mypluploader.init();
//Boom! It fails
});
如果我将第 4 步更改为包含 2 秒的 setTimeout,它可以正常工作,没有错误:
$.get('/plupload-zones.html', function(theDropZoneHTML) {
// theDropZoneHTML: <div id='dropzones'>...</div>
obj.after(theDropZoneHTML);
setTimeout(function() {
mypluploader = new plupload.Uploader({..., drop_element: 'dropzones', ...});
mypluploader.init();
//Bingo! It works
}, 2000);
});
啊哈,延迟来自页面上的 Angular 转发器。等待 Angular 重复完成解决问题:ng-repeat finish event