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 相关文章推荐
传智播客学习之java 反射
Nov 22 Javascript
js下利用控制器载入对应脚本
Jul 17 Javascript
JavaScript基本编码模式小结
May 23 Javascript
JS的replace方法介绍
Oct 20 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 Javascript
Node.js 中使用 async 函数的方法
Nov 20 Javascript
在vue-cli中组件通信的方法
Dec 16 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
Aug 31 Javascript
vue首次赋值不触发watch的解决方法
Sep 11 Javascript
js实现表格单列按字母排序
Aug 12 Javascript
Vue实现简单的拖拽效果
Aug 25 Javascript
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
PHP+DBM的同学录程序(3)
2006/10/09 PHP
可输入的下拉框
2006/06/19 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
Python 正则表达式实现计算器功能
2017/04/29 Python
Python输出带颜色的字符串实例
2017/10/10 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
python 异步async库的使用说明
2020/05/04 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
Python脚本调试工具安装过程
2021/01/11 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
药品促销活动方案
2014/02/14 职场文书
房产委托公证书样本
2014/04/04 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
python简单验证码识别的实现过程
2021/06/20 Python