为什么点击侦听器不适用于父元素li?

时间:2018-07-09 15:36:25

标签: javascript jquery

$("li").on("click",'span',function(event){
    event.stopImmediatePropagation();
    $(this).parent().fadeOut(function(){
        $(this).remove();
    }); 
});

因此,我已经使用点击侦听器删除了待办事项。

待办事项html在li内包含垃圾桶图标的嵌套范围。

对于跨度的“ click”侦听器,我已将“ li”用作父元素。 但是事件侦听器对于动态添加的元素不再起作用。

我观察到,如果我将父元素选择为'ul',它会很好地工作:

$("ul").on("click",'span',function(event){
    event.stopImmediatePropagation();
    $(this).parent().fadeOut(function(){
        $(this).remove();
    }); 
});

这是代码段: https://codepen.io/AjayKudva/pen/MBgrdW

1 个答案:

答案 0 :(得分:1)

据我了解,您希望单击跨度时删除动态添加的li标签。为此,您需要引用一个静态的父对象。如果您可以将ul用作父项,那么它将起作用。

https://jsfiddle.net/theBestOfThem/cebv78j4/

$("ul").on("click",'span',function(event){
  event.stopImmediatePropagation();
  $(this).parent().fadeOut(function(){
    $(this).remove();
  });   
});

表明引用了ul。

我希望这对您有帮助