我正在尝试侦听某个具有动态添加到DOM中的特定类的节点。一旦添加了该节点,我想向该节点添加一个插件实例。我遇到的问题是DOMNodeInserted运行多次,然后在此Node上多次运行我的插件,这导致了问题。
页面上只有一次此类的出现。
为什么会这样,我该如何阻止这种情况的发生?
$(document).ready(function(){
$('#editArea').live('DOMNodeInserted', '.class', function(e){
$('.class').plugin({
source: 'libs/ajax/somescript.php',
});
})
});
可能是因为在您的DOM中,无论您要监视的元素是什么,都有子元素。该事件会为匹配元素(.class
)触发一次,并为每个后代触发一次。
如果您需要监视select
的option
元素就像是在其下的一堆元素,那么一种快速而肮脏的解决方案可能是监视可以在DOM中放置的另一个“伙伴”元素。例如:
$(document).ready(function(){
$('#editArea').on('DOMNodeInserted', '#classbuddy', function(e){
$('.class').plugin({
source: 'libs/ajax/somescript.php',
});
})
});
然后,在标记中,您只需添加带有的空白元素即可id="classbuddy"
。因为该范围没有子元素,所以您的代码只会触发一次,因此.plugin()
只能应用一次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句