我想在创建$(e).append()
后立即使用e
。
我知道我可以使用它:setTimeout(/*func checking if parent exists*/, 100)
但我发现这是一个非常糟糕的主意。是否有某种DOM事件,当DOM元素的子树被修改时会触发?
我通常只是将其粘贴到源代码中,然后粘贴到创建父代的函数中,但实际上并不可能,部分原因是因为我实际上正在制作Chrome扩展程序。
感谢您的帮助
答案 0 :(得分:1)
我会使用这个库来等待元素存在Arrive.js
// watch for creation of an element which satisfies the selector ".test-elem"
$(document).arrive(".test-elem", function() {
// 'this' refers to the newly created element
var $newElem = $(this);
});
// the above event would watch for creation of element in whole document
// it's better to be more specific whenever possible, for example
$(".container-1").arrive(".test-elem", function() {
var $newElem = $(this);
});
正如您所看到的,它非常易于使用。如果您不想使用外部库,则需要查看JS中的MutationObserver
,因为DOMNodeInserted
已弃用。
解压缩库很容易,如文档中所示:
// unbind all arrive events on document element
$(document).unbindArrive();
// unbind all arrive events on document element which are watching for ".test-elem" selector
$(document).unbindArrive(".test-elem");
// unbind only a specific callback
$(document).unbindArrive(callbackFunc);
// unbind only a specific callback on ".test-elem" selector
$(document).unbindArrive(".test-elem", callbackFunc);
// unbind all arrive events
Arrive.unbindAllArrive();
答案 1 :(得分:0)
如果$(document).ready(function(){
//code here
}
是某些静态HTML的一部分,那么您可以使用典型的:
e
如果代码动态添加DOMNodeInserted
,您可以使用e
事件。为了这个例子,我假设<li>
是$(document).on('DOMNodeInserted', 'li', function(){
//code here
});
apc_u