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提示 &quot;object expected&quot;的解决方法
Dec 13 Javascript
JQuery autocomplete 使用手册
Apr 01 Javascript
Javascript面向对象编程(三) 非构造函数的继承
Aug 28 Javascript
js实现的类似于asp数据字典的数据类型代码实例
Sep 03 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
Sep 30 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 Javascript
详解datagrid使用方法(重要)
Nov 06 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处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python黑魔法之参数传递
2016/02/12 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
python使用opencv读取图片的实例
2017/08/17 Python
python re模块findall()函数实例解析
2018/01/19 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
python实现桌面气泡提示功能
2019/07/29 Python
Python for循环及基础用法详解
2019/11/08 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
工程质量承诺书
2014/03/27 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
安全生产奖惩制度
2015/08/06 职场文书
高中化学教学反思
2016/02/22 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书