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 相关文章推荐
ModelDialog JavaScript模态对话框类代码
Apr 17 Javascript
js遍历td tr等html元素
Dec 13 Javascript
JS:window.onload的使用介绍
Nov 13 Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
详谈js模块化规范
Jul 07 Javascript
angularJS实现动态添加,删除div方法
Feb 27 Javascript
详解如何在vue-cli中使用vuex
Aug 07 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
vue+egg+jwt实现登录验证的示例代码
May 18 Javascript
vue element实现表格合并行数据
Nov 30 Vue.js
理解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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python中enumerate函数代码解析
2017/10/31 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python config文件的读写操作示例
2019/09/27 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
25道Java面试题集合
2013/05/21 面试题
法律专业实习鉴定
2013/12/22 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
工作作风建设心得体会
2014/10/22 职场文书
物业保安辞职信
2015/05/12 职场文书
汉语拼音教学反思
2016/02/22 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python