0

当我向元素动态添加类时,伪过滤无法识别该类。当我使用 on() 函数时会出现此问题,但是当我使用 live() 时一切都很好

http://jsfiddle.net/AHyyq/1/

一开始,所有列表项都是可点击的。但是在您按下按钮后,“Ipsum”不应再被点击,并且不应出现另一个“未激活”消息。

$('.item:not(.active)').on('click', function(){
   $('<p>Not active</p>').appendTo('body');
});
4

4 回答 4

3
$('body').on('click', '.item:not(.active)', function(){
    $('<p>Not active</p>').appendTo('body');
});
于 2013-03-22T06:35:57.730 回答
1

采用$(document).on

$(document).on('click','.item:not(.active)', function(){
   $('<p>Not active</p>').appendTo('body');
});

DEMO

于 2013-03-22T06:36:25.497 回答
0

这是正确的行为。您正在向非活动元素(所有 3 个 .item)添加事件。因此,如果您添加类,它不会取消绑定事件。

我会做这样的事情:

$('input[type=button]').click(function(){
    $('.item:nth-child(2)').addClass('active').css('color','#F00');
});

$('.item').on('click', function() {    
    if($(this).is('.active')) return;

    $('<p>Not active</p>').appendTo('body');
});

http://jsfiddle.net/AHyyq/9/

于 2013-03-22T06:51:01.787 回答
-1

看这里

 $(document).on('click','.item:not(.active)', function(){
   $('<p>Not active</p>').appendTo('body');
});
于 2013-03-22T06:38:19.587 回答