1

如果我单击数字 div,我应该会收到警报。如果我单击点击器,则会在数字 div 中添加一个 less 类,并且在此之后对数字 div 的任何单击都不应显示警报,因为它现在具有 less 类。相反,我仍然收到警报,好像 less 类不存在一样。我究竟做错了什么?

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

这是一个小提琴

感谢各位大侠的帮助,我最终得到了这个:

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

3 回答 3

5

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

于 2012-12-07T22:08:18.183 回答
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');
    }
});

检查小提琴

该事件被添加到元素而不是中,因此当您添加条件以不根据类条件触发事件时,它将不起作用..

您需要为此类情况委派事件。

于 2012-12-07T22:10:51.867 回答
1

$("numbers") 通过了一次测试,并绑定了点击事件。完成——绑定已修复。

于 2012-12-07T22:09:49.960 回答