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获取当前路径的简单示例代码
Jan 08 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
实例讲解jquery与json的结合
Jan 07 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
JS动态给对象添加事件的简单方法
Jul 19 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
Dec 14 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 Javascript
jQuery点击导航栏选中更换样式的实现代码
Jan 23 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
Sep 03 Javascript
js实现网页版贪吃蛇游戏
Feb 22 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
Jquery replace 字符替换实现代码
2010/12/02 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
js实现3D旋转相册
2020/08/02 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
酒店总经理职务说明书
2014/02/26 职场文书
大学毕业感言200字
2014/03/09 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫