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 に答える