jQuery 事件的命名空間簡單了解
更新時(shí)間:2013年11月22日 16:19:15 作者:
用 jQuery 綁定和解綁事件監(jiān)聽器都是非常簡單的,怎樣精確地解綁其中一個監(jiān)聽器?我們需要了解一下事件的命名空間,感興趣的朋友不要錯過
用 jQuery 綁定和解綁事件監(jiān)聽器都是非常簡單的。但是當(dāng)你為一個元素的一個事件綁定了多個監(jiān)聽器時(shí),怎樣精確地解綁其中一個監(jiān)聽器?我們需要了解一下事件的命名空間。
看下面這段代碼:
$('#element')
.on('click', doSomething)
.on('click', doSomethingElse);
像上面這樣綁定事件監(jiān)聽器,當(dāng)元素被點(diǎn)擊時(shí),doSomething 和 doSomethingElse 這兩個監(jiān)聽器都會被觸發(fā)。這是使用 jQuery 的一個便利之處,可以隨時(shí)給元素的同一個事件添加不同的監(jiān)聽器。不像用 onclick 那樣,新的監(jiān)聽器會覆蓋舊的。
如果你想解綁其中一個監(jiān)聽器,比如 doSomething,怎么做呢?
是這樣嗎?
$('#element').off('click');
注意!上面這行代碼會把元素的 click 事件的所有監(jiān)聽器全部解綁,而這并不是我們要的結(jié)果。
幸運(yùn)的是 jQuery 的 .off() 方法可以接受第二個參數(shù),就像 .on() 一樣。只要把監(jiān)聽器函數(shù)的名字作為第二個參數(shù)傳入 .off() 方法,就能夠解綁指定的監(jiān)聽器。
$('#element').off('click', doSomething);
但是如果你不知道這個函數(shù)的名字,或者你用的是匿名函數(shù):
$('#element').on('click', function() {
console.log('doSomething');
});
怎樣才能精確地解綁某一個 click 事件監(jiān)聽器呢?
先上代碼:
$('#element').on('click.myNamespace', function() {
console.log('doSomething');
});
這里不只是把 click 事件作為參數(shù)傳入 .on() 方法,而是給 click 事件指定了一個命名空間,然后監(jiān)聽了這個命名空間里的 click 事件。此時(shí),即使監(jiān)聽器是匿名函數(shù),實(shí)際上它也是 “ 有名 ” 的了。現(xiàn)在你可以像下面這樣解綁某一個具體的命名空間里的事件監(jiān)聽器了。
$('#element').off('click.myNamespace');
這是 jQuery 為我們提供的又一個方便而強(qiáng)大的功能,它的內(nèi)部實(shí)現(xiàn)肯定很有意思!
看下面這段代碼:
復(fù)制代碼 代碼如下:
$('#element')
.on('click', doSomething)
.on('click', doSomethingElse);
像上面這樣綁定事件監(jiān)聽器,當(dāng)元素被點(diǎn)擊時(shí),doSomething 和 doSomethingElse 這兩個監(jiān)聽器都會被觸發(fā)。這是使用 jQuery 的一個便利之處,可以隨時(shí)給元素的同一個事件添加不同的監(jiān)聽器。不像用 onclick 那樣,新的監(jiān)聽器會覆蓋舊的。
如果你想解綁其中一個監(jiān)聽器,比如 doSomething,怎么做呢?
是這樣嗎?
復(fù)制代碼 代碼如下:
$('#element').off('click');
注意!上面這行代碼會把元素的 click 事件的所有監(jiān)聽器全部解綁,而這并不是我們要的結(jié)果。
幸運(yùn)的是 jQuery 的 .off() 方法可以接受第二個參數(shù),就像 .on() 一樣。只要把監(jiān)聽器函數(shù)的名字作為第二個參數(shù)傳入 .off() 方法,就能夠解綁指定的監(jiān)聽器。
復(fù)制代碼 代碼如下:
$('#element').off('click', doSomething);
但是如果你不知道這個函數(shù)的名字,或者你用的是匿名函數(shù):
復(fù)制代碼 代碼如下:
$('#element').on('click', function() {
console.log('doSomething');
});
怎樣才能精確地解綁某一個 click 事件監(jiān)聽器呢?
先上代碼:
復(fù)制代碼 代碼如下:
$('#element').on('click.myNamespace', function() {
console.log('doSomething');
});
這里不只是把 click 事件作為參數(shù)傳入 .on() 方法,而是給 click 事件指定了一個命名空間,然后監(jiān)聽了這個命名空間里的 click 事件。此時(shí),即使監(jiān)聽器是匿名函數(shù),實(shí)際上它也是 “ 有名 ” 的了。現(xiàn)在你可以像下面這樣解綁某一個具體的命名空間里的事件監(jiān)聽器了。
復(fù)制代碼 代碼如下:
$('#element').off('click.myNamespace');
這是 jQuery 為我們提供的又一個方便而強(qiáng)大的功能,它的內(nèi)部實(shí)現(xiàn)肯定很有意思!
您可能感興趣的文章:
- 實(shí)例講解jQuery中對事件的命名空間的運(yùn)用
- jquery利用命名空間移除綁定事件的方法
- 在jquery中處理帶有命名空間的XML數(shù)據(jù)
- jQuery中綁定事件的命名空間詳解
- javascript,jquery閉包概念分析
- jQuery事件綁定.on()簡要概述及應(yīng)用
- 關(guān)于jQuery新的事件綁定機(jī)制on()的使用技巧
- jquery 事件冒泡的介紹以及如何阻止事件冒泡
- jquery事件機(jī)制擴(kuò)展插件 jquery鼠標(biāo)右鍵事件
- jquery新的綁定事件機(jī)制on方法的使用方法
- jQuery的緩存機(jī)制淺析
- jQuery命名空間與閉包用法示例
相關(guān)文章
jquery學(xué)習(xí)筆記之無new構(gòu)建詳解
大部分人使用 jQuery 的時(shí)候都是使用第一種無 new 的構(gòu)造方式,直接 $('') 進(jìn)行構(gòu)造,這也是 jQuery 十分便捷的一個地方。這篇文章主要給大家介紹了關(guān)于jquery學(xué)習(xí)筆記之無new構(gòu)建的相關(guān)資料,需要的朋友們下面來一起看看吧。2017-12-12jQuery之a(chǎn)jax技術(shù)的詳細(xì)介紹
本篇文章是對jQuery中的ajax技術(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06用jquery實(shí)現(xiàn)動畫跳到頂部和底部(這個比較簡單)
用jquery實(shí)現(xiàn)動畫的跳到頂部和底部,當(dāng)點(diǎn)擊頂部按鈕的時(shí)候,執(zhí)行方法,scrollTop屬性獲取選中標(biāo)簽距滾動條的距離2014-09-09基于jquery實(shí)現(xiàn)手風(fēng)琴效果
這篇文章主要為大家詳細(xì)介紹了基于jquery實(shí)現(xiàn)手風(fēng)琴效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Jquery通過JSON字符串創(chuàng)建JSON對象
這篇文章主要介紹了Jquery如何通過JSON字符串創(chuàng)建JSON對象,并附詳細(xì)示例,需要的朋友可以參考下2014-08-08jQuery實(shí)現(xiàn)可展開合攏的手風(fēng)琴面板菜單
這篇文章主要介紹了jQuery實(shí)現(xiàn)可展開合攏的手風(fēng)琴面板菜單,涉及jQuery中slideUp及slideDown方法的相關(guān)使用技巧,代碼簡單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09jQuery的load()方法及其回調(diào)函數(shù)用法實(shí)例
這篇文章主要介紹了jQuery的load()方法及其回調(diào)函數(shù)用法,實(shí)例分析了load方法的簡單使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03