JS组件Bootstrap dropdown组件扩展hover事件


Posted in Javascript onApril 17, 2016

bootstrap导航条当中dropdown组件用得特别频繁,本文就为大家介绍bootstrap中的dropdown组件扩展hover事件,具体内容如下

JS组件Bootstrap dropdown组件扩展hover事件

如何实现这个hover事件呢,其实在dropdown组件的点击事件的基础上很好完成的。细心者可以发现,下拉框出现时,其父级会有一个open的class属性。我们只需要监听hover事件时,给父级增加或删除open类就可以了。

boostrap-hover-dropdown.js插件,托管在github上的代码网址:查看

下面是完整的js插件代码:

// bootstrap响应式导航条<br>;(function($, window, undefined) {
 // outside the scope of the jQuery plugin to
 // keep track of all dropdowns
 var $allDropdowns = $();
 
 // if instantlyCloseOthers is true, then it will instantly
 // shut other nav items when a new one is hovered over
 $.fn.dropdownHover = function(options) {
 
  // the element we really care about
  // is the dropdown-toggle's parent
  $allDropdowns = $allDropdowns.add(this.parent());
 
  return this.each(function() {
   var $this = $(this).parent(),
    defaults = {
     delay: 500,
     instantlyCloseOthers: true
    },
    data = {
     delay: $(this).data('delay'),
     instantlyCloseOthers: $(this).data('close-others')
    },
    options = $.extend(true, {}, defaults, options, data),
    timeout;
 
   $this.hover(function() {
    if(options.instantlyCloseOthers === true)
     $allDropdowns.removeClass('open');
 
    window.clearTimeout(timeout);
    $(this).addClass('open');
   }, function() {
    timeout = window.setTimeout(function() {
     $this.removeClass('open');
    }, options.delay);
   });
  });
 };
 
 $('[data-hover="dropdown"]').dropdownHover();
})(jQuery, this);

可以看到作者在插件前面加了个分号;,增加了插件的兼容性,因为可能上一个js代码没写;,如果在此不加分号则可能因为没换行导致js出错。

可选参数
delay: (可选参数) 在毫秒的延迟。这是等待的时间之前关闭下拉当鼠标不再在下拉菜单或按钮/导航项目,激活它。默认值 500。
instantlyCloseOthers: (可选参数) 一个布尔值,如果为真,将立即关闭所有其他下拉菜单的使用当您启动一个新的选择器匹配导航。默认值 true。

加上以上js代码后,此时效果还实现不了,因为我们还需要再做一步,就是给元素加上data-*属性:

data-hover="dropdown"
完整的HTML元素代码:

<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown"></a>

可以通过数据属性设置选项,也可以通过data-delay和data-close-others来设置选项
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-delay="1000" data-close-others="false"></a>

当然,还有最简单的方法,那就是用css的hover控制

[/code].nav> li:hover .dropdown-menu {display: block;}[/code]
这样一句代码也能实现想要的hover效果,只不过如果在hover的时候点击组件,再去hover另一个组件就会出现如下效果:

JS组件Bootstrap dropdown组件扩展hover事件

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

以上就是为大家分享的Bootstrap dropdown组件扩展hover事件使用方法,希望对大家熟练掌握hover事件有所帮助。

Javascript 相关文章推荐
js 小贴士一星期合集
Apr 07 Javascript
jQuery.ajax 用户登录验证代码
Oct 29 Javascript
JQuery datepicker 使用方法
May 20 Javascript
基于jQuery实现的水平和垂直居中的div窗口
Aug 08 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 Javascript
详解如何实现一个简单的 vuex
Feb 10 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
Sep 03 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 Javascript
理解javascript对象继承
Apr 17 #Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
Apr 17 #Javascript
js如何准确获取当前页面url网址信息
Sep 13 #Javascript
基于javascript实现图片切换效果
Apr 17 #Javascript
非常棒的jQuery图片轮播效果
Apr 17 #Javascript
jQuery实现的倒计时效果实例小结
Apr 16 #Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
Apr 16 #Javascript
You might like
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
解析PHP中ob_start()函数的用法
2013/06/24 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
javascript event 事件解析
2011/01/31 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
理解javascript async的用法
2017/08/22 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
Python实现Selenium自动化Page模式
2019/07/14 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
上班上网检讨书
2014/01/29 职场文书
分层教学实施方案
2014/03/19 职场文书
带病坚持工作事迹
2014/05/03 职场文书
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
SQLServer中exists和except用法介绍
2021/12/04 SQL Server