shown.bs.tab 带有默认选项卡的事件不工作
shown.bs.tab event with default tab is not working
我在我的一个应用程序中使用 bootstrap 选项卡,我遇到了一个挑战,即当页面加载默认活动选项卡时 shown.bs.tab 事件没有被触发。
在下面的代码中,我有一个名为 "Home" 的选项卡,这是一个默认选项卡(已添加活动 class)。在页面加载时,我的 "Home" 选项卡内容完美显示,但挑战是未触发附加到该选项卡的 'shown.bs.tab' 事件。当我导航到 "Menu 1" 选项卡然后返回到 "Home" 选项卡时,会触发相同的事件。
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#home">Home</a></li>
<li><a data-toggle="tab" href="#menu1">Menu 1</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>HOME</h3>
<p>Some content.</p>
</div>
<div id="menu1" class="tab-pane fade">
<h3>Menu 1</h3>
<p>Some content in menu 1.</p>
</div>
</div>
<script>
$(document).ready(function(){
$("a[href='#home']").on('shown.bs.tab', function (e) {
alert('tab shown');
});
});
</script>
如何在页面加载时触发此事件?这背后的意图是 "Home" 选项卡的内容是动态的,即显示在选项卡上触发的 Ajax 调用的响应。
通过从 HTML 中删除 "active" class 并将脚本添加到 select 默认显示的选项卡来解决此问题。
下面是更新后的脚本。
<script>
$(document).ready(function(){
$("a[href='#home']").on('shown.bs.tab', function (e) {
alert('tab shown');
}).tab('show');
});
</script>
使用此脚本,当显示 "Home" 选项卡时,将触发事件。此外,从其他选项卡返回时也会触发相同的操作。
在我的例子中,从选项卡中删除 active
class 并在绑定事件后添加 .tab('show')
部分解决了问题,但不是打开第一个选项卡,而是打开了最后一个。我的解决方案是删除 active
class 并将此行添加到 javascript:
$('a[data-toggle="tab"]').first().tab('show');
我在我的一个应用程序中使用 bootstrap 选项卡,我遇到了一个挑战,即当页面加载默认活动选项卡时 shown.bs.tab 事件没有被触发。
在下面的代码中,我有一个名为 "Home" 的选项卡,这是一个默认选项卡(已添加活动 class)。在页面加载时,我的 "Home" 选项卡内容完美显示,但挑战是未触发附加到该选项卡的 'shown.bs.tab' 事件。当我导航到 "Menu 1" 选项卡然后返回到 "Home" 选项卡时,会触发相同的事件。
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#home">Home</a></li>
<li><a data-toggle="tab" href="#menu1">Menu 1</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>HOME</h3>
<p>Some content.</p>
</div>
<div id="menu1" class="tab-pane fade">
<h3>Menu 1</h3>
<p>Some content in menu 1.</p>
</div>
</div>
<script>
$(document).ready(function(){
$("a[href='#home']").on('shown.bs.tab', function (e) {
alert('tab shown');
});
});
</script>
如何在页面加载时触发此事件?这背后的意图是 "Home" 选项卡的内容是动态的,即显示在选项卡上触发的 Ajax 调用的响应。
通过从 HTML 中删除 "active" class 并将脚本添加到 select 默认显示的选项卡来解决此问题。
下面是更新后的脚本。
<script>
$(document).ready(function(){
$("a[href='#home']").on('shown.bs.tab', function (e) {
alert('tab shown');
}).tab('show');
});
</script>
使用此脚本,当显示 "Home" 选项卡时,将触发事件。此外,从其他选项卡返回时也会触发相同的操作。
在我的例子中,从选项卡中删除 active
class 并在绑定事件后添加 .tab('show')
部分解决了问题,但不是打开第一个选项卡,而是打开了最后一个。我的解决方案是删除 active
class 并将此行添加到 javascript:
$('a[data-toggle="tab"]').first().tab('show');