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 相关文章推荐
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
javascript函数以及基础写法100多条实用整理
Jan 13 Javascript
jquery ready(fn)事件使用介绍
Aug 21 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 Javascript
jQuery简单几行代码实现tab切换
Mar 10 Javascript
javascript 四十条常用技巧大全
Sep 09 Javascript
jstl中判断list中是否包含某个值的简单方法
Oct 14 Javascript
详解Vue.js入门环境搭建
Mar 17 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
Apr 01 Javascript
详解AngularJS跨页面传值(ui-router)
Aug 23 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 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
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
Javascript - HTML的request类
2006/07/15 Javascript
关于Javascript 的 prototype问题。
2007/01/03 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
Python读写Excel文件的实例
2013/11/01 Python
python实现定时播放mp3
2015/03/29 Python
详解Swift中属性的声明与作用
2016/06/30 Python
python实现二叉查找树实例代码
2018/02/08 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
python实现画一颗树和一片森林
2018/06/25 Python
python tornado修改log输出方式
2019/11/18 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
阳光体育活动方案
2014/02/16 职场文书
技能竞赛活动方案
2014/02/21 职场文书
校庆活动策划方案
2014/06/05 职场文书
质量整改报告范文
2014/11/08 职场文书
2015年读书月活动总结
2015/03/26 职场文书