如果我点击数字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');
});
Run Code Online (Sandbox Code Playgroud)
感谢帮助人员,我最终得到了这个:
$('body').on('click', '.numbers:not(".less")', function(){
alert('should not alert if has class less after clicker');
});
Run Code Online (Sandbox Code Playgroud)
尝试委派活动
$('body').on('click','.numbers' ,function(e){
if( $(e.target).hasClass('less'){
// Do nothing
}
else{
alert('should not alert if has class less after clicker');
}
});
Run Code Online (Sandbox Code Playgroud)
事件被添加到元素而不是类中,因此当您添加条件以不基于类条件触发事件时,它将无法工作.
您需要为此类案例委派事件.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |