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 控制弹出窗口
Apr 10 Javascript
Javascript insertAfter() 实现函数代码
Oct 12 Javascript
基于jQuery实现图片的前进与后退功能
Apr 24 Javascript
关于jQuery中.attr()和.prop()的问题探讨
Sep 06 Javascript
JS高级运动实例分析
Dec 20 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
Jan 20 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
Thinkjs3新手入门之如何使用静态资源目录
Dec 06 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
Aug 02 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
Mar 10 Javascript
vue select 获取value和lable操作
Aug 28 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
php之字符串变相相减的代码
2007/03/19 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
Python调用命令行进度条的方法
2015/05/05 Python
python实现统计代码行数的方法
2015/05/22 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
python 画函数曲线示例
2019/12/04 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
python的sys.path模块路径添加方式
2020/03/09 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
公司前台接待岗位职责
2013/12/03 职场文书
高中打架检讨书
2014/02/13 职场文书
求职信怎么写
2014/05/23 职场文书
单位委托书怎么写
2014/08/02 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
初中语文教学研修日志
2015/11/13 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers