2013-03-22 3 views
0

클래스에 요소를 동적으로 추가 할 때 의사 필터링은 해당 클래스를 인식하지 못합니다. 나는() 함수를 사용할 때 이 문제가 발생하지만, 모든 목록 항목을 클릭 할 수 있습니다 내가 초기에 jQuery가 인식하지 못함 : not (.className) 필터링

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

라이브()

를 사용할 때 모든 것이 괜찮습니다. 버튼을 누른 후에 "Ipsum"을 더 이상 클릭 할 수 없으며 다른 "비활성"메시지가 나타나서는 안됩니다.

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

답변

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

사용 $(document).on

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

DEMO

-1

See here

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

그것은 올바른 동작입니다. 비 활동 요소 (3 개 항목 모두)에 이벤트를 추가하고 있습니다. 클래스를 추가하면 이벤트를 바인딩 해제하지 않습니다.

$('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/

:

나는 같은 것을 할 것

관련 문제