什么时候DOM准备好跟随jQuery.after - Plupload

时间:2015-03-23 23:23:37

标签: javascript jquery ajax dom plupload

简短版

在调用jQuery.after来插入HTML之后,我怎么知道DOM何时准备就绪?

长版

我从ajax调用中获取Plupload dropzones并使用jQuery.after来插入它们。当我然后调用mypluploader.init()初始化Plupload时,由于DOM没有准备好(显然),它失败了。这就是我正在做的事情:

  1. 我加载页面
  2. 用户点击修改
  3. 我使用ajax获取Plupload区域并使用jQuery.after
  4. 插入返回的HTML
  5. 然后我致电mypluploader.init()初始化Plupload
  6. 我收到以下错误:TypeError: Cannot read property 'style' of null
  7. 摘要代码:

    $.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以包含setTimeout 2秒,它可以正常工作,没有错误:

    $.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);
    });
    

1 个答案:

答案 0 :(得分:0)

啊哈,延迟来自一个Angular中继器,也在页面上。等待Angular重复完成解决了问题:ng-repeat finish event