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 相关文章推荐
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
jQuery getJSON 处理json数据的代码
Jul 26 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
JS小功能(列表页面隔行变色)简单实现
Nov 28 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
Sep 19 Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
Jan 19 Javascript
如何写好你的JavaScript【推荐】
Mar 02 Javascript
node.js中express-session配置项详解
May 31 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
Feb 26 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
Jan 27 Javascript
JavaScript享元模式原理与用法实例详解
Mar 09 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 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
php上传大文件设置方法
2016/04/14 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
vue的token刷新处理的方法
2018/07/17 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
详解Python中的各种函数的使用
2015/05/24 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
python使用KNN算法识别手写数字
2019/04/25 Python
python重要函数eval多种用法解析
2020/01/14 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
如何基于Python按行合并两个txt
2020/11/03 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
Linux的文件类型
2012/03/07 面试题
Ruby如何进行文件操作
2014/07/17 面试题
工业自动化毕业生自荐信范文
2014/01/04 职场文书
事业单位接收函
2014/01/10 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
2015年检验科工作总结
2015/04/27 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers