2009-09-09 14 views
27

Mam drzewo div:Prevent wykonanie obsługi zdarzeń rodzic

<div id="a" onclick="func"> 
    <div id="b" onclick="func"> 
     <div id="c" onclick="func"> 
     </div> 
    </div> 
</div> 

Kiedy kliknięcia wykonane na div to sprawia, że ​​to dzieci niewidoczne - czyli kliknij na „a” włączy „B” i " c "niewidzialny.

function func{ 
    if ($(childId).hasClass("visible")){ 
    $(childId).removeClass("visible"); 
    $(childId).addClass("invisible"); 
} 

Problem polega na: a kliknięcie na "b" zadzwoni "a" 's kliknij i uczynić "b" i "c" niewidzialny. Jak wyłączyć kliknięcie "a" za pomocą jQuery?

dzięki

Odpowiedz

53

Można dodać obsługi dla dziecka, które zapobiegają zdarzenie click z rozmnożeniowego up:

function handler(event) { 
    event.stopPropagation(); 
    // now do your stuff   
} 
$('#a').add('#b').click(handler); 

ten sposób klika do '#b' nie będzie rozprzestrzeniać się '#a'. Żadne kliknięcia nie zostaną zmienione na na '#b', a więc na '#a'.

+0

To jest całkiem fajne, działa nawet z $ (". ClickyClass a"). Click (function (e) {e.stopPropagation();}); zakładając, że .clickyClass ma moduł obsługi kliknięć – daveagp

+0

, czy to również zapobiegnie bootstrapowi 'data-toggle =" collapse "' na rodzica z pracy? ponieważ próbuję i nie mogę :( –

11

użytku

event.stopPropagation()

Zatrzymuje pęcherzyków zdarzenia do elementów nadrzędnych, zapobieganie każdego rodzica ładowarki od otrzymania powiadomienia o wypadku .

gdy kliknięcie na bic

Powiązane problemy