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 相关文章推荐
基于jquery的可多选的下拉列表框
Jul 20 Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
jQuery的deferred对象使用详解
Sep 25 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
Apr 08 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 Javascript
JS实现前端动态分页码代码实例
Jun 02 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 Javascript
vue实现拖拽进度条
Mar 01 Vue.js
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 开发环境配置(测试开发环境)
2010/04/28 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
js控制分页打印、打印分页示例
2014/02/08 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
javascript实现实时输出当前的时间
2015/04/27 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
npm qs模块使用详解
2020/02/07 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
Python对excel文档的操作方法详解
2018/12/10 Python
Python3最长回文子串算法示例
2019/03/04 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
linux面试题参考答案(10)
2016/10/26 面试题
《口技》教学反思
2014/02/21 职场文书
大学三年计划书范文
2014/04/30 职场文书
三下乡个人总结
2015/03/04 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫