提问者:小点点

在div中删除动态选项卡时,至少有一个活动类


我会尽量说得具体些。我有一个navbar可以有动态添加的选项卡,当点击附加选项卡时,这些附加选项卡也可以通过点击关闭按钮移除。以下是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">&times;</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();
});

我只想要至少一个活动选项卡,即使活动选项卡被用户移除。当前,当我关闭活动选项卡时,没有活动类,使选项卡相似。


共1个答案

匿名用户

关闭选项卡时,取选项卡的索引。如果是最后一个,那么将活动类添加到最后一个选项卡,如果是第一个,然后是第一个,如果是中间的某个地方,那么从关闭的选项卡的左边或右边取一个。

$(".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();
}