【问题标题】:Bootstrap jQuery Tabs are not working in DropdownBootstrap jQuery 选项卡在下拉菜单中不起作用
【发布时间】:2016-11-12 08:38:34
【问题描述】:

$('.dropdown-menu li').on('click', function(event){
  //The event won't be propagated to the document NODE and 
  // therefore events delegated to document won't be fired
  event.stopPropagation();
});
$('.dropdown-menu li').on('click', function(event){
  //The event won't be propagated to the document NODE and 
  // therefore events delegated to document won't be fired
  event.stopPropagation();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<li class="dropdown messages-menu">
  <!-- Menu toggle button -->
  <a href="#" class="dropdown-toggle" data-toggle="dropdown">
    <span class="caret"></span>
  </a>
  <div class="dropdown-menu">
    <ul class="nav nav-tabs" id="myTab">
      <li class="active"><a data-target="#home" data-toggle="tab">Home</a></li>
      <li><a data-target="#profile" data-toggle="tab">Profile</a></li>
      <li><a data-target="#messages" data-toggle="tab">Messages</a></li>
    </ul>

    <div class="tab-content">
      <div class="tab-pane active" id="home">Home</div>
      <div class="tab-pane" id="profile">Profile</div>
      <div class="tab-pane" id="messages">Message</div>
    </div>
  </div>
</li>

嘿,当我在dropdown-menu 之外单击时,我正在尝试开发我希望dropdown-menu 关闭的代码,我成功了,但是当我在@ 中插入nav-tabs 时出现问题987654327@ 选项卡不工作。

这里是小提琴链接https://jsfiddle.net/zeasts/gz15c52a/

提前致谢

热情

【问题讨论】:

  • 删除你的java脚本代码然后你就可以点击其他菜单选项
  • 我也想要那个代码,因为当我点击 dropdown-menu 项目时,dropdown-menu 不应该关闭。 @NeerajSharma

标签: javascript jquery twitter-bootstrap drop-down-menu navbar


【解决方案1】:

您将停止在单击 li 时传播事件,这会导致选项卡的选择中断。由于您需要停止事件传播以避免关闭下拉菜单,因此您必须手动选择选项卡。您可以通过以下代码实现。

$( document ).ready(function() {
$('.dropdown-menu li').on('click', function(event){
//The event won't be propagated to the document NODE and 
// therefore events delegated to document won't be fired
   event.stopPropagation();
 });

 $('.dropdown-menu li').on('click', function(event){
   //The event won't be propagated to the document NODE and 
   // therefore events delegated to document won't be fired
   event.stopPropagation();
 });

 $('.dropdown-menu > ul > li > a').on('click', function(event){
  event.stopPropagation();
  $(this).tab('show')
 });
});

更新片段

 $( document ).ready(function() {
$('.dropdown-menu li').on('click', function(event){
//The event won't be propagated to the document NODE and 
// therefore events delegated to document won't be fired
   event.stopPropagation();
 });

 $('.dropdown-menu li').on('click', function(event){
   //The event won't be propagated to the document NODE and 
   // therefore events delegated to document won't be fired
   event.stopPropagation();
 });
   
 $('.dropdown-menu > ul > li > a').on('click', function(event){
  event.stopPropagation();
  $(this).tab('show')
 });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<li class="dropdown messages-menu">
  <!-- Menu toggle button -->
  <a href="#" class="dropdown-toggle" data-toggle="dropdown">
    <span class="caret"></span>
  </a>
  <div class="dropdown-menu">
    <ul class="nav nav-tabs" id="myTab">
      <li class="active"><a data-target="#home" data-toggle="tab">Home</a></li>
      <li><a data-target="#profile" data-toggle="tab">Profile</a></li>
      <li><a data-target="#messages" data-toggle="tab">Messages</a></li>
    </ul>

    <div class="tab-content">
      <div class="tab-pane active" id="home">Home</div>
      <div class="tab-pane" id="profile">Profile</div>
      <div class="tab-pane" id="messages">Message</div>
    </div>
  </div>
</li>

【讨论】:

  • 它给li.dropdown 带来了问题,即使在关闭dropdown-menu 之后,li.dropdown 仍处于active 模式。 @深
  • 是否每次关闭下拉菜单时都将主页选项卡显示为选定选项卡?
  • 不,这与 jQuery 的选项卡无关,但父 li.dropdown 正在激活,我在下一条评论中更新了小提琴链接。 @深
  • 好的,去看看
  • 好的,解决了您的问题,您有 2 个下拉菜单,这就是发生此问题的原因,我们必须将事件与正确的元素绑定。 $('.dropdown-menu > ul > li > a').on('click', function(event){ event.stopPropagation(); $(this).tab('show') });这样你就可以选择正确的元素,小提琴:jsfiddle.net/gz15c52a/5
猜你喜欢
  • 2015-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多