【问题标题】:How to check in jQuery if a Bootstrap tab isn't clicked?如果未单击 Bootstrap 选项卡,如何签入 jQuery?
【发布时间】:2015-08-03 07:52:43
【问题描述】:

我在 Bootstrap 中有标签:

<ul class="nav nav-tabs" role="tablist">
  <li>tab1</li>
  <li>tab2</li>
  <li>tab3</li>
  <li>tab4</li>
  <li>tab5</li>
</ul>

<p id="message"></p>

我怎样才能使它在没有点击标签时显示消息“请选择一个标签”?

我在标签下方创建了&lt;p id="message"&gt;&lt;/p&gt;,我只需要在没有点击标签时插入消息,并在点击标签时删除消息,但我不知道如何检查。

【问题讨论】:

  • 什么是&lt;li ...&gt;?发布正常的 HTML。
  • 一开始至少有一个标签是活动的,对吧?你怎么能说不会有任何tab 活跃?
  • 因为没有标签有“活动”?

标签: javascript jquery twitter-bootstrap


【解决方案1】:

对于引导选项卡,您还需要内容容器。在这种情况下,我会将消息 div 放入 tab-content div:

<!-- Tab panes -->
<div class="tab-content">
    <div role="tabpanel" class="tab-pane" id="home">...</div>
    <div role="tabpanel" class="tab-pane" id="profile">...</div>
    <div role="tabpanel" class="tab-pane" id="messages">...</div>
    <div role="tabpanel" class="tab-pane" id="settings">...</div>
    <p id="message">Please select some tab</p>
</div>

...并使其隐藏,以防使用简单的 CSS 规则选择任何内容:

.tab-pane.active ~ #message {
    display: none;
}

.tab-pane.active ~ #message {
    display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link data-require="bootstrap-css@*" data-semver="3.3.1" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />

<ul class="nav nav-tabs" role="tablist">
  <li role="presentation"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
  <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
  <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
  <div role="tabpanel" class="tab-pane" id="home">Home</div>
  <div role="tabpanel" class="tab-pane" id="profile">Profile</div>
  <div role="tabpanel" class="tab-pane" id="messages">Messages</div>
  <p id="message">Please select some tab</p>
</div>

演示: http://plnkr.co/edit/1VaF3NoTRK4X2pnd651G?p=info

【讨论】:

    【解决方案2】:

    @dfsq 发布的解决方案比下面的更优雅。但是,如果您的情况不允许您更改 HTML 标记,这里还有另一种方法。

    var selectedTab = $('.nav-tabs li.active');
    
    if(selectedTab.length === 0){
        $('#message').html('Please select tab');
    }
    

    【讨论】:

      【解决方案3】:

      如果单击选项卡,则引导程序具有要捕获的“shown.bs.tab”事件。您可以如下所示使用它。

      $(document).on( 'shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
         console.log(e.target) // activated tab
      })
      

      【讨论】:

        【解决方案4】:

        BootStrap 中,当单击选项卡时,相应的li 元素会获得active 类,而其他li 标记在单击之前没有此类。

        您可以使用以下代码检查是否单击了任何选项卡:

        $(function(){
            CheckTabClick()
        })
        
        $(".nav-tabs li").click(function(){
            CheckTabClick()
        })
        
        function CheckTabClick(){
          var tab_clicked = $(".nav-tabs li.active")
        
          if (tab_clicked.length == 0){
              $("#message").show();
          }
            else{
             $("#message").hide();
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-12
          • 2019-10-17
          • 1970-01-01
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多