用 jQuery 綁定和解綁事件監聽器都是非常簡單的。但是當你為一個元素的一個事件綁定了多個監聽器時,怎樣精確地解綁其中一個監聽器?我們需要了解一下事件的命名空間。
創新互聯公司是創新、創意、研發型一體的綜合型網站建設公司,自成立以來公司不斷探索創新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十載時間我們累計服務了上千家以及全國政企客戶,如圍欄護欄等企業單位,完善的項目管理流程,嚴格把控項目進度與質量監控加上過硬的技術實力獲得客戶的一致贊美。
看下面這段代碼:
$('#element') .on('click', doSomething) .on('click', doSomethingElse);
像上面這樣綁定事件監聽器,當元素被點擊時,doSomething 和 doSomethingElse 這兩個監聽器都會被觸發。這是使用 jQuery 的一個便利之處,可以隨時給元素的同一個事件添加不同的監聽器。不像用 onclick 那樣,新的監聽器會覆蓋舊的。
如果你想解綁其中一個監聽器,比如 doSomething,怎么做呢?
是這樣嗎?
$('#element').off('click');
注意!上面這行代碼會把元素的 click 事件的所有監聽器全部解綁,而這并不是我們要的結果。
幸運的是 jQuery 的 .off() 方法可以接受第二個參數,就像 .on() 一樣。只要把監聽器函數的名字作為第二個參數傳入 .off() 方法,就能夠解綁指定的監聽器。
$('#element').off('click', doSomething);
但是如果你不知道這個函數的名字,或者你用的是匿名函數:
$('#element').on('click', function() { console.log('doSomething'); });
怎樣才能精確地解綁某一個 click 事件監聽器呢?該了解一下 jQuery 的事件命名空間了(jQuery namespaced events)!
先上代碼:
$('#element').on('click.myNamespace', function() { console.log('doSomething'); });
這里不只是把 click 事件作為參數傳入 .on() 方法,而是給 click 事件指定了一個命名空間,然后監聽了這個命名空間里的 click 事件。此時,即使監聽器是匿名函數,實際上它也是 “ 有名 ” 的了。現在你可以像下面這樣解綁某一個具體的命名空間里的事件監聽器了。
$('#element').off('click.myNamespace');
這是 jQuery 為我們提供的又一個方便而強大的功能,它的內部實現肯定很有意思!
編譯自:CSS-Tricks
更多WEB技術,歡迎訪問:胡作菲為
網站題目:jQuery事件的命名空間
URL標題:http://vcdvsql.cn/article16/gghddg.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、動態網站、自適應網站、企業建站、網站設計、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯