检查是否已加载由javascript插入的div

时间:2012-03-07 10:07:54

标签: jquery

我有一个以magento加载的页面。由于我必须做一些快速修复,我需要检查DIV是否已加载。使用javascript插入。

div name:umm

使用此:https://stackoverflow.com/a/4160706/1147634

var len = jQuery('#umm').append('<a href="#">hi</a>')
    .find('a')
    .load(function() {
        if( --len === 0) {
            alert('all are loaded');
        }
    }).length;

使用javascript插入HTML。

<input id="evtproducttype" type="hidden" value="activities">
<input type="button" onclick="addInputGroup('evt_detail','evt_detaildhtmlgoodies_tabView1','evt_detailtabtitle');" value="+ Add Activity">
<div id="umm"></div>
<div id="dynamicGroupControl"></div>

我必须等到这个div被加载。

这不起作用,我的div是空的。

2 个答案:

答案 0 :(得分:3)

您的代码看起来很不错 - 但为什么不这样做:

function addSomething() {
     $('#parentelement').append('<div>your contents</div>');
     // append is immediate - so you can now do your next step !
}

注意事项 - append函数将元素添加到父元素 - 因此您需要选择正确的父元素。一旦附加完成,您可以执行下一步。要调用您的添加,只需调用函数addSomething()

更新

你有两个选择......

选项1 ...更改您的onclick

onclick="addInputGroup('evt_detail','evt_detaildhtmlgoodies_tabView1','evt_detailtabtitle'); addSomething();"

这会在addSomething函数

之后调用addInputGroup函数

选项2 ...更改您的功能:

function addInputGroup(arg1,arg2,arg3) {
  // do your normal stuff
  addSomething(); // or add the actual code here
}

第二个选项意味着更容易修改对函数的每次调用

再次更新

唯一真正的选择是在你的div加载时实际调用一个函数...你可以使用livequery plugin - 这将在div实际完成加载时触发一个函数:

$('#umm').livequery(function(){ 
  // the div has not loaded
});

答案 1 :(得分:1)

load()事件仅对与URL关联的元素(从中加载资源)有意义。由于您无法在diva上使用它,因此只能使用图片,脚本,框架,iframe和window对象。

通过js添加div的那一刻,它被插入到dom-tree中,并且准备好了#34;。你不需要检查。这只是远程资源所必需的。

编辑:

你需要等待那个电话,直到你的文件准备就绪(dom-tree已经建成)

出于这个原因,使用$(document).ready( <yourcodehere> )或直接使用$( <yourcodehere> )