[jquery] 활성 탭 변경을위한 부트 스트랩 3 jquery 이벤트
부트 스트랩 3 탭 / 탐색 모음의 탭이 변경되고 말 그대로 구글 스 패트 아웃 된 모든 제안이 잘못되었거나 작동하지 않았을 때 함수를 실행하려고하는 데 비현실적인 시간을 보냈습니다 .
어떻게해야합니까?
메타 편집 : 의견보기
답변
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var target = $(e.target).attr("href") // activated tab
alert(target);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<ul id="myTab" class="nav nav-tabs">
<li class="active"><a href="#home" data-toggle="tab">Home</a></li>
<li class=""><a href="#profile" data-toggle="tab">Profile</a></li>
</ul>
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade active in" id="home">
home tab!
</div>
<div class="tab-pane fade" id="profile">
profile tab!
</div>
</div>
답변
$(function () {
$('#myTab a:last').tab('show');
});
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var target = $(e.target).attr("href");
if ((target == '#messages')) {
alert('ok');
} else {
alert('not ok');
}
});
문제는 attr ( ‘href’)가 절대로 비어 있지 않다는 것입니다.
또는 #id = “#some value”를 비교 한 다음 아약스를 호출하십시오.
답변
@Gerben의 게시물 덕분에 문서- 부트 스트랩 탭 사용법에 설명 된대로 show.bs.tab (탭이 표시되기 전에)과 shown.bs.tab (탭이 표시된 후)이라는 두 가지 이벤트가 있음을 알게되었습니다.
특정 탭에만 관심이 있고 하나의 함수에 if-else 블록을 추가하지 않고도 별도의 함수를 추가하는 경우 추가 솔루션은 href 선택기를 사용하는 것입니다 (필요한 경우 추가 선택기와 함께 가능)
$("a[href='#tab_target_id']").on('shown.bs.tab', function(e) {
console.log('shown - after the tab has been shown');
});
// or even this one if we want the earlier event
$("a[href='#tab_target_id']").on('show.bs.tab', function(e) {
console.log('show - before the new tab has been shown');
});
답변
Mosh Feu 답변에 추가하려면 내 경우처럼 탭을 즉석에서 만든 경우 다음 코드를 사용하십시오.
$(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
var tab = $(e.target);
var contentId = tab.attr("href");
//This check if the tab is active
if (tab.parent().hasClass('active')) {
console.log('the tab with the content id ' + contentId + ' is visible');
} else {
console.log('the tab with the content id ' + contentId + ' is NOT visible');
}
});
나는 이것이 누군가를 돕기를 바랍니다.
답변
이것은 나를 위해 일했습니다.
$('.nav-pills > li > a').click( function() {
$('.nav-pills > li.active').removeClass('active');
$(this).parent().addClass('active');
} );
답변
다른 접근법을 사용합니다.
하위 문자열a
에서 id
시작하는 모든 곳 을 찾으십시오. .
JS
$('a[id^=v-photos-tab]').click(function () {
alert("Handler for .click() called.");
});
HTML
<a class="nav-item nav-link active show" id="v-photos-tab-3a623245-7dc7-4a22-90d0-62705ad0c62b" data-toggle="pill" href="#v-photos-3a623245-7dc7-4a22-90d0-62705ad0c62b" role="tab" aria-controls="v-requestbase-photos" aria-selected="true"><span>Cool photos</span></a>