jquery停止调用其他处理程序

Gau*_*hah 8 javascript jquery javascript-events

假设我有标签,我附加了两个点击事件:

$('#l1').bind('click',function(){
 alert('label clicked');
}
$('#l2').bind('click',function(){
 alert('label2 clicked');
}
$('#l3').bind('click',function(){
 alert('label3 clicked');
}

$('label').bind('click',function(){
 if($(this).hasClass('disabled')
return false
}
<label id='l1'>hi</label>
<label id='l2' class="disabled">bye</label>
<label id='l3'>hi</label>
Run Code Online (Sandbox Code Playgroud)

现在,我不希望在disabled单击具有类的标签时显示警报.有可能吗?

注意:alert只是一个虚拟的东西..我正在执行一组操作,而不是那个...每个不同的实际标签

nnn*_*nnn 22

如果多个事件处理程序绑定到同一事件的同一元素,则处理程序将按它们绑定的顺序调用.如果event.stopImmediatePropagation()在特定处理程序内调用,它将停止调用后续处理程序.

所以修改你的$('label').bind()如下:

$('label').bind('click',function(event){
   if($(this).hasClass('disabled') {
      event.stopImmediatePropagation();
      return false;
   }
}
Run Code Online (Sandbox Code Playgroud)

并将其移到你的其他.bind()电话之上.然后该特定处理程序将首先执行,并有机会阻止其他处理程序执行.

(注意,.stopImmediatePropagation()它不一样.stopPropagation()) - 后者停止事件冒泡DOM树,但不会停止同一元素上的其他处理程序.)