我的页面上有一些“静态”HTML:
<;div id=“部门”>;
<;ul class=“导航选项卡”id=“分区选项卡”>;
@*<;李>;节点将通过javascript注入到这里*@
</ul>;
<;div class=“tab content”id=“division tabpanes”>;
@*<;div class=“选项卡窗格”>;节点将通过javascript注入到这里*@
</部门>;
</部门>;
在页面加载时,我创建一个选项卡“框架”,即创建引导选项卡和选项卡内容容器
我通过以下方式触发流程:
$(窗口).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();
打破
}
}
})