JS組件Bootstrap dropdown組件擴(kuò)展hover事件
bootstrap導(dǎo)航條當(dāng)中dropdown組件用得特別頻繁,本文就為大家介紹bootstrap中的dropdown組件擴(kuò)展hover事件,具體內(nèi)容如下

如何實(shí)現(xiàn)這個(gè)hover事件呢,其實(shí)在dropdown組件的點(diǎn)擊事件的基礎(chǔ)上很好完成的。細(xì)心者可以發(fā)現(xiàn),下拉框出現(xiàn)時(shí),其父級(jí)會(huì)有一個(gè)open的class屬性。我們只需要監(jiān)聽(tīng)hover事件時(shí),給父級(jí)增加或刪除open類就可以了。
boostrap-hover-dropdown.js插件,托管在github上的代碼網(wǎng)址:查看
下面是完整的js插件代碼:
// bootstrap響應(yīng)式導(dǎo)航條<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);
可以看到作者在插件前面加了個(gè)分號(hào);,增加了插件的兼容性,因?yàn)榭赡苌弦粋€(gè)js代碼沒(méi)寫;,如果在此不加分號(hào)則可能因?yàn)闆](méi)換行導(dǎo)致js出錯(cuò)。
可選參數(shù)
delay: (可選參數(shù)) 在毫秒的延遲。這是等待的時(shí)間之前關(guān)閉下拉當(dāng)鼠標(biāo)不再在下拉菜單或按鈕/導(dǎo)航項(xiàng)目,激活它。默認(rèn)值 500。
instantlyCloseOthers: (可選參數(shù)) 一個(gè)布爾值,如果為真,將立即關(guān)閉所有其他下拉菜單的使用當(dāng)您啟動(dòng)一個(gè)新的選擇器匹配導(dǎo)航。默認(rèn)值 true。
加上以上js代碼后,此時(shí)效果還實(shí)現(xiàn)不了,因?yàn)槲覀冞€需要再做一步,就是給元素加上data-*屬性:
data-hover="dropdown"
完整的HTML元素代碼:
可以通過(guò)數(shù)據(jù)屬性設(shè)置選項(xiàng),也可以通過(guò)data-delay和data-close-others來(lái)設(shè)置選項(xiàng)
當(dāng)然,還有最簡(jiǎn)單的方法,那就是用css的hover控制
[/code].nav> li:hover .dropdown-menu {display: block;}[/code]
這樣一句代碼也能實(shí)現(xiàn)想要的hover效果,只不過(guò)如果在hover的時(shí)候點(diǎn)擊組件,再去hover另一個(gè)組件就會(huì)出現(xiàn)如下效果:

如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附兩個(gè)精彩的專題:Bootstrap學(xué)習(xí)教程 Bootstrap實(shí)戰(zhàn)教程
以上就是為大家分享的Bootstrap dropdown組件擴(kuò)展hover事件使用方法,希望對(duì)大家熟練掌握hover事件有所幫助。
- 詳解bootstrap用dropdown-menu實(shí)現(xiàn)上下文菜單
- bootstrap如何讓dropdown menu按鈕式下拉框長(zhǎng)度一致
- Bootstrap下拉菜單Dropdowns的實(shí)現(xiàn)代碼
- Bootstrap CSS組件之下拉菜單(dropdown)
- Bootstrap中的Dropdown下拉菜單更改為懸停(hover)觸發(fā)
- JQuery組件基于Bootstrap的DropDownList(完整版)
- 創(chuàng)建基于Bootstrap的下拉菜單的DropDownList的JQuery插件
- 基于Bootstrap里面的Button dropdown打造自定義select
- Bootstrap模塊dropdown實(shí)現(xiàn)下拉框響應(yīng)
- Bootstrap 下拉菜單.dropdown的具體使用方法
相關(guān)文章
微信小程序?qū)崿F(xiàn)上拉加載功能示例【加載更多數(shù)據(jù)/觸底加載/點(diǎn)擊加載更多數(shù)據(jù)】
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)上拉加載功能,結(jié)合實(shí)例形式分析了微信小程序加載更多數(shù)據(jù)、觸底加載或點(diǎn)擊加載更多數(shù)據(jù)的相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-05-05
如何通過(guò)JS實(shí)現(xiàn)轉(zhuǎn)碼與解碼
這篇文章主要介紹了如何通過(guò)JS實(shí)現(xiàn)轉(zhuǎn)碼與解碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
JavaScript實(shí)現(xiàn)鼠標(biāo)控制自由移動(dòng)的窗口
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)鼠標(biāo)控制自由移動(dòng)的窗口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
利用js判斷手機(jī)是否安裝某個(gè)app的多種方案
這篇文章主要介紹了利用js檢測(cè)手機(jī)是否安裝某個(gè)app的多種方案,當(dāng)判斷后如果安裝了直接打開(kāi),如果有沒(méi)有安裝將自動(dòng)跳轉(zhuǎn)到下載的界面,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02
thinkphp實(shí)現(xiàn)無(wú)限分類(使用遞歸)
這篇文章主要介紹了在使用遞歸的情況下thinkphp實(shí)現(xiàn)無(wú)限分類,感興趣的小伙伴們可以參考一下2015-12-12
去除JavaScript對(duì)象中空值和空對(duì)象的四種方式
開(kāi)發(fā)時(shí)遇到一個(gè)問(wèn)題,需要將對(duì)象中的空值和空對(duì)象去除,所以這篇文章主要給大家介紹了關(guān)于去除JavaScript對(duì)象中空值和空對(duì)象的四種方式,需要的朋友可以參考下2023-09-09
JavaScript統(tǒng)計(jì)數(shù)組中相同的數(shù)量的方法總結(jié)
在JavaScript中,我們經(jīng)常需要對(duì)數(shù)組中對(duì)象的屬性進(jìn)行統(tǒng)計(jì)。在本文中,我們將介紹如何使用JavaScript來(lái)實(shí)現(xiàn)這一功能,文中有詳細(xì)的代碼示例,需要的朋友可以借鑒參考2023-05-05

