2011-11-29 24 views
8

ı etiketlere sahip ve bunun için iki tıklama olayları takmak diyelim başka işleyici çağırarak:jQuery durdurma

$('#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> 

Şimdi sınıf disabled sahiptir etiket tıklandığında uyarı görüntülenmesini istemiyoruz. Bunu yapmak mümkün mü?

Not: alert sadece bir kukla şey .. ben bunun yerine bir dizi eylemi yapıyorum olduğunu .. Birden olay işleyicileri için aynı elemana bağlıdır

cevap

22

Eğer gerçek etiketin temelinde her farklı Aynı olay işleyicileri, bağlı oldukları sırada çağrılır. Belirli bir işleyicide event.stopImmediatePropagation()'u çağırırsanız, sonraki işleyicilerin aranması durur.

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

ve diğer .bind() aramalar Yukarıdaki yukarı hareket:

Yani aşağıdaki gibi $('label').bind() değiştirin. Daha sonra bu belirli işleyici ilk önce yürütür ve diğer işleyicilerin çalışmasını engelleme şansına sahip olur.

(.stopImmediatePropagation().stopPropagation()] ile aynı olmadığına dikkat edin -. İkinci DOM ağacını kabardığını olayı durur ama aynı eleman diğer işleyicileri durmuyor)

+0

1 güzel ..... ... – ManseUK

+0

<3333333333333333333 –

İlgili konular