2010-11-19 21 views
5

Böyle olan iç içe UL en bir dizi var:jQuery olaylarının ana öğelere taşınmasını nasıl engellerim?

<ul class="categorySelect" id=""> 
    <li class="selected">Root<span class='catID'>1</span> 
    <ul class="" id=""> 
     <li>First Cat<span class='catID'>2</span> 
     <ul class="" id=""> 
      <li>cat in First<span class='catID'>3</span> 
      <ul class="" id=""> 
      </ul> 
      </li> 
      <li>another cat in first<span class='catID'>4</span> 
      <ul class="" id=""> 
      </ul> 
      </li> 
     </ul> 
     </li> 
     <li>cat in root<span class='catID'>5</span> 
     <ul class="" id=""> 
     </ul> 
     </li> 
    </ul> 
    </li> 
</ul> 

Sonra ben click() farklı Lis için "selected" sınıfını geçmek için amaçlanan bu jQuery vardır:

$(document).ready(function() { 

    $("ul.categorySelect li").click(function() { 
     $("ul.categorySelect li.selected").removeClass("selected"); 
     $(this).addClass("selected"); 
    }) 

}); 

Bunu test ettiğinde İlk başta hiç işe yaramıyordu. Tıklama etkinliği işlevinin içine bir alert("click") ekledim ve bunun çalıştığını anladım, ancak hem LI hem de ana LI'lar üzerinde kayıtlı tıklama olayı, nihayetinde kök Ll'in her zaman seçildiği gibi sonuçlanması anlamına geliyordu.

click() etkinliğinin ana LIs üzerinde yürütülmesini engellemenin bir yolu var mı?

cevap

8

Kullanım event.stopPropagation(); bağlantı bir örnek sağlar.

+0

teşekkürler. Kolay bir şey olduğunu biliyordum ... sadece ne aradığımı bilmiyordum. – quakkels

İlgili konular