17

Mam następujące HTML:Kliknij wydarzenie w bootstrap 3 zakładkach

<div id="channels"> 
    <ul class="nav nav-tabs" id="ul-channels"> 
     <li class="channel" data-roomid="lobby"><a class="link-channel" href="#lobby" data-toggle="tab">lobby</a></li> 
     <li class="channel active selected" data-roomid="test"><a class="link-channel" href="#test" data-toggle="tab">test</a></li> 
    </ul> 
</div> 

Potrzebuję zdarzenie, które występuje podczas przełączania kart. W ten sposób:

$('.nav-tabs a').click(function (e) { 
    alert("Q"); 
}); 

Próbowałem wielu opcji, ale nie udało mi się. Będę wdzięczny za każdą pomoc.

+5

Spróbuj '$ ('nav-kart ') bind (' click', function (e) {...});' i nie zapomnij DOM gotowy handler – karthikr

+0

@karthikr, dziękuję, to jest praca! – Denis

+1

* "Od jQuery 1.7 metoda .on() jest preferowaną metodą dołączania programów obsługi zdarzeń do dokumentu." * Z http://api.jquery.com/bind/ – DanFromGermany

Odpowiedz

41

Ostateczna moje rozwiązanie.

$(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) { 
    console.log(e.target) // activated tab 
}) 
+0

Jak mogę zmienić ten kod, więc że na [data-toggle = "tab"]: ostatnie jedno wydarzenie zostanie uruchomione, ale jeśli na innych zakładkach zrobi się inne wydarzenie. –

+1

@Greg L, myślę, że powinniśmy spróbować tego: $ (dokument) .on ('shown.bs.tab', 'a [data-toggle = "tab"]: last', function (e) { console.log (e.target) // aktywowana zakładka }) $ (dokument) .on ("shown.bs.tab", "a [data-toggle =" tab "]: not (: last) ' , function (e) { console.log (e.target) // aktywowana zakładka }) – Denis

+0

Dobrze. Ale w jaki sposób mogę uzyskać zdarzenie, jeśli ponownie otwarta zostanie otwarta aktualnie otwierana karta? – Bryce