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 相关文章推荐
对textarea框的代码调试,而且功能上使用非常方便,酷
Jun 30 Javascript
javascript jscroll模拟html元素滚动条
Dec 18 Javascript
javascript页面加载完执行事件代码
Feb 11 Javascript
javascript中expression的用法整理
May 13 Javascript
js显示当前日期时间和星期几
Oct 22 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
Bootstrap项目实战之子栏目资讯内容
Apr 25 Javascript
浅析JavaScript中的array数组类型系统
Jul 18 Javascript
js实现统计字符串中特定字符出现个数的方法
Aug 02 Javascript
荐书|您有一份JavaScript书单待签收
Jul 21 Javascript
JavaScript 九种跨域方式实现原理
Feb 11 Javascript
详解JavaScript实现动态的轮播图效果
Apr 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
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
php解决安全问题的方法实例
2019/09/19 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
Python实用日期时间处理方法汇总
2015/05/09 Python
如何使用python操作vmware
2019/07/27 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
英语导游词
2015/02/13 职场文书
交心谈心活动总结
2015/05/11 职场文书
毕业实习证明范本
2015/06/16 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
JS数组去重详情
2021/11/07 Javascript
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技
Mysql中常用的join连接方式
2022/05/11 MySQL