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编程起步(第七课)
Jan 10 Javascript
jquery.post用法示例代码
Jan 03 Javascript
JavaScript将数据转换成整数的方法
Jan 04 Javascript
jQuery中noconflict函数的实现原理分解
Feb 03 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
基于JavaScript实现移动端TAB触屏切换效果
Oct 20 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
Vue.js教程之计算属性
Nov 11 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
Mar 30 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
vue router 配置路由的方法
Jul 26 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
B2K与车机的中波PK
2021/03/02 无线电
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
jQuery的一些注意
2006/12/06 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Python数据结构之单链表详解
2017/09/12 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
浅谈django的render函数的参数问题
2018/10/16 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
大客户销售经理职责
2013/12/04 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
销售个人求职信范文
2014/04/28 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书