17

나는 다음과 같은 HTML이 :Click 이벤트

<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> 

내가 탭을 전환 할 때 발생하는 이벤트가 필요합니다. 이와 같이 :

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

나는 많은 선택을 시도했지만 성공하지 못했습니다. 나는 어떤 도움을 주셔서 감사합니다.

+5

시도'$은 ('. NAV-탭') 바인딩 ('클릭'기능 (전자) {...});'와 DOM을 잊지 말아 준비 핸들러 – karthikr

+0

@karthikr, 고마워, 일이야! – Denis

+1

* "jQuery 1.7부터는 .on() 메서드가 이벤트 핸들러를 문서에 첨부하는 데 선호되는 방법입니다."* http://api.jquery.com/bind/ – DanFromGermany

답변

41

마지막 내 솔루션 :.

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

어떻게이 코드를 변경할 수 있습니까? 그 동안 [data-toggle = "tab"]에서 : 마지막 한 이벤트는 시작되지만 다른 탭에서는 다른 이벤트가 시작됩니다. –

+1

@ 그렉 L, 우리는 이것을 시도해야한다고 생각합니다 : $ (문서) .on ('shown.bs.tab', 'a 데이터 토글 = "탭"] : 마지막', 기능 (e) { console.log (e.target) // 활성화 된 탭 } $ (문서) .on ('shown.bs.tab', 'a [데이터 토글 = 탭'] : not (: last) ' , function (e) { console.log (e.target) // 활성화 된 탭 }) – Denis

+0

좋습니다. 그러나 현재 열려있는 탭을 다시 클릭하면 이벤트를 어떻게 얻을 수 있습니까? – Bryce