JS组件Bootstrap dropdown组件扩展hover事件
作者:bea
bootstrap导航条当中dropdown组件用得特别频繁,本文就为大家介绍bootstrap中的dropdown组件扩展hover事件,具体内容如下 如何实现这个hover事件呢,其实在dropdown组件的点击事件的基础上很好完成的。细心者可以发现,下拉框出现时,其父级会有一个open的class属性。我们只需要监听hover事件时,给父级增加或删除open类就可以了。 boostrap-hover-dropdown.js插件,托管在github上的代码网址:查看 下
bootstrap导航条当中dropdown组件用得特别频繁,本文就为大家介绍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另一个组件就会出现如下效果:
如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程
以上就是为大家分享的Bootstrap dropdown组件扩展hover事件使用方法,希望对大家熟练掌握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另一个组件就会出现如下效果:
如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程
以上就是为大家分享的Bootstrap dropdown组件扩展hover事件使用方法,希望对大家熟练掌握hover事件有所帮助。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- AngularJS入门教程之AngularJS模型
- AngularJS入门教程之AngularJS指令
- AngularJS入门教程之AngularJS表达式
- jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
- jQuery使用$.each遍历json数组的简单实现方法
- jQuery validate+artdialog+jquery form实现弹出表单思路详解
- JS中artdialog弹出框控件之提交表单思路详解
- jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
- ArtEditor富文本编辑器增加表单提交功能
- JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
- JS区分浏览器页面是刷新还是关闭
- js组件SlotMachine实现图片切换效果制作抽奖系统
- JS中取二维数组中最大值的方法汇总
- JS组件Bootstrap ContextMenu右键菜单使用方法
- 最简单js代码实现select二级联动下拉菜单
- 基于javascript实现精确到毫秒的倒计时限时抢购
- 第二次聊一聊JS require.js模块化工具的基础知识
- 第一次接触JS require.js模块化工具
- jqGrid 学习笔记整理——进阶篇(一 )