我会尝试尽可能具体。我有一个导航栏,可以动态添加标签,点击其他标签后,也可以通过单击关闭按钮删除这些附加标签。这是Html:
<ul id="nav-tabs" data-tabs="tabs" >
<li id="test" class="active">
<a href="#home" data-toggle="tabs" >
<img src="assets/img/button_home_selected3.png" class="hover" width="83" />
<span>Home<button type="button" class="close">×</button></span>
</a>
</li>
</ul>
li标签是动态添加和删除的,li标签中的活动类显示不同的图像,使标签可以区分,因此活动类在li标签之间切换。
要关闭标签,脚本为:
$('.close').click(function(e) {
e.preventDefault();
var panelId = $(this).closest("li").remove().attr("aria-controls");
$("#tab" + panelId).remove();
});
即使用户删除了活动标签,我也只想要至少一个活动标签。目前,当我关闭活动选项卡时,没有活动类,使选项卡类似。
答案 0 :(得分:0)
你可以试试这个:
$('.close').click(function(e) {
e.preventDefault();
var panelId = $(this).closest("li").remove().attr("aria-controls");
$("#tab" + panelId).remove();
$("#nav-tabs").children("li").last().addClass("active");
});
如果您希望第一个标签处于活动状态,请将.last()
替换为.first()
。 :)
答案 1 :(得分:0)
关闭选项卡时,请选择选项卡的索引。如果它是最后一个,则将活动类添加到最后一个选项卡,如果是第一个,则首先,如果位于中间的某个位置,则从关闭选项卡的左侧或右侧选择一个。
$(".close").on("click", function() {
var elem = $(this).closest("li");
if (elem.hasClass("active")) {
var idx = elem.index(),
remainingTabs = $("li");
if (idx <= remainingTabs.length) {
$(remainingTabs.get(idx - 1)).addClass("active");
} else if (idx == 0) {
$(remainingTabs.get(0)).addClass("active");
}
}
// remove current tab
$(".close", elem).unbind();
elem.remove();
}