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 相关文章推荐
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
Jun 29 Javascript
Javascript自定义排序 node运行 实例
Jun 05 Javascript
JQuery遍历json数组的3种方法
Nov 08 Javascript
由ReactJS的Hello world说开来
Jul 02 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
教你一步步用jQyery实现轮播器
Dec 18 Javascript
js编写三级联动简单案例
Dec 21 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
Vue.js组件间通信方式总结【推荐】
Nov 23 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 Javascript
前端天气插件tpwidget使用方法详解
Jun 24 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 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
我的论坛源代码(八)
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
mysql建立外键
2006/11/25 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
解决python删除文件的权限错误问题
2018/04/24 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
项目经理的岗位职责
2013/11/23 职场文书
医学专业毕业生个人求职信
2013/12/25 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
《草原》教学反思
2014/02/15 职场文书
给学校的建议书
2014/03/12 职场文书
爱与责任演讲稿
2014/05/20 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书