2012-12-07 43 views
1

如果我点击数字div,我应该得到一个警报。如果我点击喀哒声,一个less的类被添加到数字div,并且在数字div之后的任何点击都不应该显示alert,因为它现在具有less的类。相反,我仍然得到警报,好像少了一个班不在那里。我究竟做错了什么?jQuery - 不是()不能使用新添加的类上的元素

<div id="clicker">Clicker</div> 
<div class="numbers">123456789</div> 

$('.numbers').not('.less').on('click',function(){ 
    alert('should not alert if has class less after clicker'); 
}); 

$('#clicker').on('click',function(){ 
    $('.numbers').addClass('less'); 
}); 

Here is a fiddle

感谢您的帮助小伙子们,我结束了这一点:

$('body').on('click', '.numbers:not(".less")', function(){ 
    alert('should not alert if has class less after clicker'); 
}); 

回答

5

尝试下放事件

$('body').on('click','.numbers' ,function(e){ 
    if($(e.target).hasClass('less'){ 
     // Do nothing 
    } 
    else{ 
     alert('should not alert if has class less after clicker'); 
    } 
}); 

Check Fiddle

的事件添加到元素,所以当你添加一个条件不火事件根据班级条件,不会起作用..

您需要为这种情况委托事件。

5

你绑定,然后添加类。您需要绑定事件后,或者将事件委托给一致的父级。

1

$(“numbers”)一次通过测试并绑定到click事件。完成 - 绑定是固定的。