jQuery - not()不使用元素上新添加的类

时间:2012-12-07 22:05:46

标签: jquery

如果我点击数字div,我应该收到警报。如果我单击clicker,则会将一个less类添加到数字div中,之后在数字div上的任何单击都不应显示警报,因为它现在具有较少的类。相反,我仍然得到警报,好像较少的班级不在那里。我究竟做错了什么?

<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');
});

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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

事件被添加到元素而不是,所以当您添加条件以不根据类条件触发事件时,它不会工作..

您需要为此类案件委派事件。

答案 2 :(得分:1)

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