2016-04-14 22 views
0

olay yangınları tıklarsanız ateş engelle HTML tıklama etkinliği, iki tıklama bağları var hangisine tıklandığına bağlı olarak. Sorun şu ki, bir LI tıklaması HTML üzerinde de bir tıklamadır, bu yüzden LI'yı tıkladığımda, hem LI tıklaması hem de HTML tıklama olayları tetiklenir.jQuery bağlama() LI benim js ise

Bir LI'dan başka bir yere tıklarsam, yalnızca istediğim gibi HTML tıklatırım.

Temel olarak "Kullanıcı bir LI öğesine tıkladıysa bunu yapın. Diğer kullanıcı, bir LI dışında başka bir yere tıkladıysa, bunu yapın"?

cevap

1

Yapmanız gereken tek şey, olay köpürmesini önlemektir. JQuery'yi kullanarak, li olay işleyicinizin içine e.stopPropagation() eklemek kadar basit.

Yani güncellenen kod şu şekilde görünecektir:

$('#menu > li').bind('click', function (e) { 
    e.stopPropagation(); 
    ... 
}); 

Ek Okuma:

https://api.jquery.com/event.stoppropagation/

http://www.quirksmode.org/js/events_order.html

+0

hayret çalıştı ki! Teşekkür ederim! Fazladan zamanınız varsa, işlev etkinliği argümanını "e" sağlayan şeyin ne olduğunu açıklayabilir misiniz? –

+1

@ KirbyL.Wallace jQuery, bind işlevini olay nesnesine otomatik olarak çağırır. Olay nesnesi, tetiklenen olay hakkında belirli bilgileri tutar. Örneğin: bir onkeypress olayında, olay nesnesi (sizin durumunuzda e), gerçek tuşa basılı tutulduğunda jQuery'nin buna iyi bir erişime sahip olduğu (çapraz tarayıcı erişimini normalleştirmek için) e.which. Umarım yardımcı olur. Daha fazla bilgi için güzel bir makale: http://www.quirksmode.org/js/events_properties.html –