Bootstrap导航条可点击和鼠标悬停显示下拉菜单


Posted in Javascript onNovember 25, 2016

使用Bootstrap导航条组件时,如果你的导航条带有下拉菜单,那么这个带下拉菜单的导航在点击时只会浮出下拉菜单,它本身的href属性会失效,也就是失去了超链接功能,这并不是我想要的,我希望导航条的链接可以正常打开它的链接,但又需要下拉菜单功能,开始折腾~

首先解决带下拉菜单的导航条可以点击问题,下拉菜单效果是JS实现的,分析bootstrap.js文件发现,Bootstrap把下拉菜单写成了一个JQuery插件,在dropdown代码段中找到了关键的几句:

// APPLY TO STANDARD DROPDOWN ELEMENTS
 // ===================================

 $(document)
 .on('click.bs.dropdown.data-api', clearMenus)
 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
 .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
 .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)

找到几句关键代码后,想到了解决办法,只要把其中click.bs.dropdown.data-api事件关闭就OK了,代码如下:

$(document).ready(function(){
 $(document).off('click.bs.dropdown.data-api');
});

以上代码测试有效,导航条可点击问题解决,下面解决鼠标悬停弹下拉菜单问题,这个相对简单些,用JQuery的鼠标事件就可实现,代码如下:

$(document).ready(function(){
 dropdownOpen();//调用
});
/**
 * 鼠标划过就展开子菜单,免得需要点击才能展开
 */
function dropdownOpen() {

 var $dropdownLi = $('li.dropdown');

 $dropdownLi.mouseover(function() {
 $(this).addClass('open');
 }).mouseout(function() {
 $(this).removeClass('open');
 });
}

小编再为大家分享一个例子:bootstrap实现鼠标悬停自动打开下拉列表框 
Bootstrap的导航条下拉菜单为了适应移动设备没有鼠标hover的状态,都是点击弹出下拉菜单,为了适应一般网站使用,我稍作了一些修改,鼠标hover时就弹出二级菜单。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bootstrap导航条鼠标悬停下拉菜单</title>
<link id="bootstrap_221" rel="stylesheet" type="text/css" class="library" href="/js/sandbox/bootstrap-2.2.1/css/bootstrap.min.css">
<script id="jquery_172" type="text/javascript" class="library" src="/js/sandbox/jquery/jquery-1.7.2.min.js"></script>
<script id="bootstrap_221" type="text/javascript" class="library" src="/js/sandbox/bootstrap-2.2.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
 <div class="span12">
  <h1>Bootstrap导航条鼠标悬停下拉菜单</h1>
  <p>Bootstrap的导航条下拉菜单为了适应移动设备没有鼠标hover的状态,都是点击弹出下拉菜单,为了适应一般网站使用,我稍作了一些修改,鼠标hover时就弹出二级菜单。</p>
  <div class="navbar">
   <div class="navbar-inner">
    <ul class="nav">
     <li><a href="#">Menu1</a></li>
     <li><a href="#">Menu2</a></li>
     <li class="dropdown"> <a href="#menu3">Menu3</a>
      <ul class="dropdown-menu">
       <li><a href="#menu7">Menu7</a></li>
       <li><a href="#menu8">Menu8</a></li>
      </ul>
     </li>
     <li><a href="#">Menu4</a></li>
     <li><a href="#">Menu5</a></li>
     <li><a href="#">Menu6</a></li>
    </ul>
   </div>
  </div>
 </div>
</div>
</body>
</html>

需要添加的CSS样式如下:

.navbar .nav > li .dropdown-menu {
 margin: 0;
}
.navbar .nav > li:hover .dropdown-menu {
 display: block;
}

这样就可以在Bootstrap中实现鼠标悬停的下拉菜单了

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
Dec 09 Javascript
js获取时间(本周、本季度、本月..)
Nov 22 Javascript
Node调试工具JSHint的安装及配置教程
May 27 Javascript
简介JavaScript中的setHours()方法的使用
Jun 11 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
ajax请求+vue.js渲染+页面加载的示例
Feb 11 Javascript
JavaScript中的E-mail 地址格式验证
Mar 28 Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 Javascript
Vue通过WebSocket建立长连接的实现代码
Nov 05 Javascript
vue中改变滚动条样式的方法
Mar 03 Javascript
node.js通过url读取文件
Oct 16 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
javaScript语法总结
Nov 25 #Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 #Javascript
JS根据生日月份和日期计算星座的简单实现方法
Nov 24 #Javascript
javascript简单进制转换实现方法
Nov 24 #Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
Nov 24 #Javascript
详解Node.js:events事件模块
Nov 24 #Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 #Javascript
You might like
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
JS与框架页的操作代码
2010/01/17 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中的推导式使用详解
2015/06/03 Python
Python切片操作深入详解
2018/07/27 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
explicit和implicit的含义
2012/11/15 面试题
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
网络工程师的自我评价
2013/10/02 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
春游踏青活动方案
2014/08/14 职场文书
会议接待欢迎标语
2014/10/08 职场文书
项目合作意向书
2015/05/08 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python