假设我有一个标签,并将两个单击事件附加到标签上:
$('#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>
现在我不想在单击类为disabled
的标签时显示警告。可以这样做吗?
注意:alert
只是一个虚拟的东西..我正在执行一组操作,而不是那个..每个操作都根据实际标签而不同
1条答案
按热度按时间zphenhs41#
如果将多个事件处理程序绑定到同一事件的同一元素,则将按照绑定顺序调用处理程序。如果在特定处理程序中调用
event.stopImmediatePropagation()
,则将停止调用后续处理程序。因此,请按如下所示修改
$('label').bind()
:并将其移到其他
.bind()
调用的上方,然后该特定处理程序将首先执行,并有机会阻止其他处理程序执行。(Note
.stopImmediatePropagation()
与.stopPropagation()
不同] -后者停止事件沿DOM树向上冒泡,但不停止同一元素上的其他处理程序。)