$("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');
});
$(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');
}
});
document
// It could also be a[data-bs-toggle="tab"]
.querySelectorAll('button[data-bs-toggle="tab"]')
.forEach(e => e.addEventListener("shown.bs.tab", e => console.log(e)))
8条答案
按热度按时间qlfbtfca1#
sr4lhrrt2#
问题是attr('href ')从不为空。
或者比较#id =“#some value”然后调用 AJAX 。
62lalag43#
感谢@Gerben的帖子,知道有两个事件show.bs.tab(在显示选项卡之前)和shown.bs.tab(在显示选项卡之后),如文档中所述-Bootstrap Tab用法
如果我们只对特定的选项卡感兴趣,并且可能添加单独的函数而不必在一个函数中添加if - else块,那么另一个解决方案是使用a href选择器(如果需要,可能沿着其他选择器)
demo
ni65a41a4#
要添加到MoshFeu的答案,如果标签是在飞行中创建的,就像我的情况一样,你会使用下面的代码
我希望这能帮助到一些人
hiz5n14c5#
这对我很有效。
41zrol4v6#
我用另一种方法。
只要尝试找到所有
a
,其中id
从某个***子字符串***开始。JS
HTML
0yycz8jy7#
类似于Gerben Rampaart对bootstrap 5 tabs的回答。只是与文档中的当前选项卡HTML有一些差异:
szqfcxe28#
如果你想要一个vanilla js的现代浏览器解决方案