在 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 没有准备好(显然),它失败了。这是我正在做的事情:

  1. 我加载页面
  2. 用户点击编辑
  3. 我使用 ajax 获取 Plupload 区域并插入返回的 HTML 和 jQuery.after
  4. 然后我调用mypluploader.init()来初始化Plupload
  5. 我收到以下错误: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