我的javascript文件中有以下内容:
var divId = "divIDer";
jQuery(divId).ready(function() {
createGrid(); //Adds a grid to the html
});
HTML看起来像这样:
<div id="divIDer"><div>
但是有时候我的createGrid()函数在divIder加载到页面之前就被调用了,所以当我试图渲染网格时,它找不到合适的div来指向,也就不会进行渲染。在div完全可以使用之后,我该如何调用函数呢?
编辑:
我正在使用Extjs加载div:
var tpl = new Ext.XTemplate(
'<div id="{divId}"></div>');
tpl.apply({
});
5条答案
按热度按时间7ajki6be1#
你可以在这里使用递归来实现。例如:
基本上,这个函数将检查以确保元素存在并且可见。如果是,它将运行
createGrid()
函数。如果不是,它将等待50ms并重试。注意::理想情况下,您只需使用 AJAX 调用的回调函数来知道容器何时被追加,但这是一种蛮力,独立的方法。
xlpyo6sf2#
到目前为止,“监听”*DOM事件 *(如插入或修改 Elements)的唯一方法是使用所谓的 Mutation Events。
进一步阅读:MDN
MutationObserver()
对象。进一步阅读:MDN
目前的语法如下所示
目前,该API已经在Firefox、Chrome和Safari的新版本中实现。我不确定IE和Opera是否会实现。因此,这里的权衡无疑是,您只能针对顶级浏览器。
56lgkhnf3#
从函数
.load()
加载特定div后做一些事情。我认为这正是你需要的:jqjz2hbq4#
通过jQuery.ready函数,你可以指定当DOM加载时执行的函数。整个DOM,而不是你想要的任何div。
所以,你应该用一种稍微不同的方式来使用ready
这是为了防止你不使用 AJAX 来加载div
w41d8nur5#
在
<div></div>
元素中,您可以调用$(document).ready(function(){});
执行命令,类似于你也可以对其他的div做同样的事情。如果你通过局部视图加载你的div,这是合适的