从引导选项卡捕获“已显示”事件

我的页面上有一些“静态”HTML:

<div id=“部门”>
<ul class=“导航选项卡”id=“分区选项卡”>
@*<李>节点将通过javascript注入到这里*@
&lt/ul>
<div class=“tab content”id=“division tabpanes”>
@*<div class=“选项卡窗格”>节点将通过javascript注入到这里*@
&lt/部门>
&lt/部门>

在页面加载时,我创建一个选项卡“框架”,即创建引导选项卡和选项卡内容容器

我通过以下方式触发流程:

$(窗口).bind(“加载”,prepareDivisionTabs);

“prepareDivisionTabs”的作用是:

函数prepareDivisionTabs(){
//检索用于创建选项卡的基本数据
$.ajax({
url:“@url.Action”(“GetDivisionDataJson”,“League”)”,
缓存:false
}).完成(功能(数据){
var$tabs=$('#DIVISIONTABS').empty();
var$panes=$(“#分区选项卡窗格”).empty();
对于(变量i=0;i<data.length;i++){
var d=数据[i];
$tabs.append(“<li><a href=\”\TABPANE“+d.DivisionId+“\”数据切换=\“tab\”>“+NMWhtmlEncode(d.Name)+”</a></li>”;
$panes.append(<div id=\“TABPANE”+d.division id+“\”class=\“tab pane\”></div>)
}
渲染数据;
}).失败(功能(错误){
警报(“请求中的AJAX错误:+JSON.stringify(err,null,2));
});
}

有关详细信息,请参见上面的“RenderVisionTapPanecontents”中的内容:

功能呈现视景内容(数据){
对于(变量i=0;i<data.length;i++){
var d=数据[i];
RenderVisionTabPaneContent(d.DivisionId);
}
}
函数renderVisionTableContent(id){
var$tabPane=$('#tabPane'+id);
$tabPane.addClass(“加载器”)
$.ajax({
url:“/League/GetDivisionPartialView?divisionId=“+id,
缓存:false
}).done(函数(html){
$tabPane.html(html);
}).失败(功能(错误){
警报(“请求中的AJAX错误:+JSON.stringify(err,null,2));
}).always(函数(){
$tabPane.removeClass(“加载器”)
});
}

到目前为止一切正常。加载我的页面,呈现我的选项卡内容,单击不同的选项卡时,会显示相关内容

现在,我不想一开始就加载所有内容,而是希望通过使用选项卡的“显示”事件及时加载选项卡内容。为了测试这一点,我只想确保在显示该选项卡时能够收到javascript警报。因此,我创建以下内容来触发选项卡显示事件的附件:

$(函数(){
附件AbshownEvents();
})

这要求:

函数附件AbshowNevents(){
$(文档)。在('show','a[data toggle=“tab”]”上,函数(e){
警报(“选项卡已更改”);
})
}

因此,我希望在更改TAB后看到“TAB CHANGED”警报。但是我没有看到警报

有人能帮我吗

选项卡更改的正确事件绑定显示为.bs.tab

$(document).on('show.bs.tab','a[data toggle="tab"]),函数(e){
警报(“选项卡已更改”);
})

更新11-01-2020—引导4.5

这仍然是正确的答案,但是,这是一点额外的有用信息,可以在官方引导文档页面的底部找到:https://getbootstrap.com/docs/4.5/components/navs/#tabs

$('a[data toggle="tab").on('show.bs.tab',function(e){
e、 目标//新激活的选项卡
e、 relatedTarget//上一个活动选项卡
})

您可以确定每次使用e.target触发代码时选择的选项卡

如果元素上有唯一的ID,那么可以执行如下操作,这样代码只能在单击相应的选项卡时运行

$('a[data toggle="tab").on('show.bs.tab',function(e){
开关(如target.id){
案例“mainTab”:{
域名Absuff();
打破
}
案例“configTab”:{
doconfigtAbsuff();
打破
}
}
})

发表评论