javascript – 在动态元素上使用.on()和e.stopPropagation()

我一直在尝试使用stopPropagation()捕获元素之外的点击事件.

$(".container").children().on('click',function(e){
  e.stopPropagation();    
});
$(".container").on("click",function(){
  alert("outside the box?");    
})​

Here is a jsFiddle set up to demonstrate it functioning.当您单击白框外的任何位置时,应触发警报.

现在,我试图将相同的原理应用于动态创建的元素.据我所知,jQuery中的事件赋值的on()方法应该允许它在不更改脚本的情况下运行.

Here is a second jsFiddle您必须首先单击链接以创建元素.一旦你完成了这个,理论是相同的脚本将起作用,但事实并非如此.我对这种方法有什么看法?

简而言之,您需要在现有父元素上放置on()以使其有效:

$('body').on('click', 'a', function(e){
    e.preventDefault();
    $('<div class="container"><div class="box"></div></div>').appendTo('body');
    $(this).remove();
});

$('body').on('click', '.container > *', function(e){
  e.stopPropagation();    
});

$('body').on('click', '.container', function(){
  alert("outside the box?");    
})​

代码:http://jsfiddle.net/GsLtN/5/

有关详细信息,请在官方网站的“直接和委派活动”部分查看‘.on()’

翻译自:https://stackoverflow.com/questions/12088460/using-on-and-e-stoppropagation-on-dynamic-elements

转载注明原文:javascript – 在动态元素上使用.on()和e.stopPropagation()