2010-02-11 19 views
15

Mam tabelę z wydarzeniami kliknięcia związanymi z jej wierszami (<tr>). Wewnątrz tych wierszy znajdują się elementy <a> z przypisanymi przypisanymi im zdarzeniami kliknięcia.Propagacja zdarzenia kliknięcia Jquery

Problem polega na tym, że po kliknięciu elementu <a> uruchamia ono także zdarzenie kliknięcia od obiektu nadrzędnego <tr>. Nie chcę tego zachowania; Chcę tylko zwolnić zdarzenie kliknięcia <a>.

Kod:

// Event row TR 

$("tr:not(:first)").click(function() { 
    $(".window, .backFundo, .close").remove(); 

    var position = $(this).offset().top; 
    position = position < 0 ? 20 : position; 

    $("body").append($("<div></div>").addClass("backFundo")); 
    $("body").append($("<div></div>").addClass("window") 
     .html("<span class=close><img src=Images/close.png id=fechar /></span>") 
     .append("<span class=titulo>O que deseja fazer?</span>" 
       +"<span class=crud><a href=# id=edit>Editar</a></span>" 
       +"<span class=crud><a href=# id=delete codigo=" 
       + $(this).children("td:first").html() 
       + ">Excluir</a></span>") 
     .css({top:"20px"}) 
     .fadeIn("slow")); 

    $(document).scrollTop(0); 
}); 

// <A> Element event 

$("a").live("click",function() { alert("clicked!"); }); 

Gdy klikniesz kotwicę to Zdarzenie z niej dominującej rzędu. Jakieś pomysły?

Odpowiedz

26

Musisz zatrzymać bulgotanie zdarzeń. W jQuery możesz to zrobić przez

e.stopPropagation(); 

w zdarzeniu onclick znacznika zakotwiczenia.

$("a").live("click",function(e){alert("clicked!");e.stopPropagation();}); 

Edit

Zobacz ten post

jquery Event.stopPropagation() seems not to work

+0

Nie, to nie jest całkiem. Już próbowałem tego. Nic się nie dzieje. – ozsenegal

+0

Czy możesz umieścić swój znacznik HTML? – rahul

+0

Mam normalną tabelę. Następnie tworzę nowe elementy kotwiące promagamatycznie i dołączam do tych wierszy. – ozsenegal

3

użyłbym bind zamiast live dla obu <tr> i <a> i następujący kod

$("a").bind("click", function(e){ alert("clicked!"); e.stopPropagation() });

dla <a>.

Wszystkie ustawienia <a href> będą działać zgodnie z oczekiwaniami, a kod obsługi zdarzenia <tr> nie zostanie wykonany po kliknięciu przycisku <a>.

Działa we wszystkich nowoczesnych przeglądarkach.

Powiązane problemy