如何使用更新的类向元素添加事件侦听器?

时间:2014-12-12 18:53:43

标签: jquery

我不明白为什么script无法正常工作。我更改了div的类,并尝试通过类名来监听绑定到elem的事件。

$('.glyphicon-minus').on('click', function () {
    var item = $(this).closest('.item');
    var child = $(item).children('.item-content');
    $(child).hide();
    $(this).removeClass('glyphicon glyphicon-minus').addClass('glyphicon glyphicon-plus');
});


$('.glyphicon-plus').on('click', function () {
    var item = $(this).closest('.item');
    var child = $(item).children('.item-content');
    debugger;
    $(child).show();
    $(this).removeClass('glyphicon glyphicon-plus').addClass('glyphicon glyphicon-minus');
});

1 个答案:

答案 0 :(得分:2)

您的绑定已经设置,因此不考虑新的类添加。您需要在DOM树上抽象绑定并将它们委托给动态节点:

更改$('.glyphicon-plus').on('click',

$('.some-permanent-container-div').on('click', '.glyphicon-plus',

如果您回忆几年前人们使用$('.my-div').live('click'来实现这一点,但所做的只是将绑定附加到document和委托。绑定到最近的静态容器并尽可能少地委托子层,效率会高得多。