不要使用jQuery觸發(fā)原生事件的方法
注:我知道,其他JS框架也提供這種功能 —— 我只用jQuery作為一個(gè)例子,因?yàn)槲铱吹搅怂氖軞g迎程度,最近又剛好碰上這個(gè)問(wèn)題。 而所有工具類(lèi)庫(kù)都有可能引發(fā)同樣的問(wèn)題。 比如 MooTools使用 的 fireEvent 等。
下面是使用 trigger 來(lái)完成任務(wù)的一個(gè)典型例子:
// 監(jiān)聽(tīng) click 事件
jQuery('.tabs a').on('click', function() {
// 執(zhí)行某些操作,比如切換界面,加載內(nèi)容等..
});
// 在最后一個(gè) a 標(biāo)簽上觸發(fā) click 事件
jQuery('.tabs a').last().trigger('click');
上面的代碼將會(huì)打開(kāi)給定index的tab標(biāo)簽。 我完全理解開(kāi)發(fā)者使用 trigger 來(lái)處理這些事情的原因,通常是因?yàn)橐|發(fā)的函數(shù)在全局范圍內(nèi)不可用,而觸發(fā)事件是很容易的,也總是可用的。 問(wèn)題是,使用原生的事件名稱來(lái)觸發(fā)可能 ... 觸發(fā) ... 一些無(wú)法言說(shuō)的傷。讓我們來(lái)看看在網(wǎng)站的其他地方添加的內(nèi)容:
// 監(jiān)聽(tīng) body 內(nèi)部的所有 click 事件
jQuery('body').on('click', 'a', function() {
// 此處可以進(jìn)行一些業(yè)務(wù)邏輯處理 ...
// 滿足條件(Condition met), 則進(jìn)行另外一些操作!
if(conditionMet) {
// 刷新頁(yè)面?
// 打開(kāi)子菜單?
// 提交表單?
// ... 燈燈蹬蹬,Intel
}
});
現(xiàn)在有一個(gè)問(wèn)題 —— 選項(xiàng)卡單擊事件可能被其他完全獨(dú)立的部分監(jiān)聽(tīng)著,這處理起來(lái)就比較麻煩。 呵呵,最好的解決方案是使用一個(gè)自定義的事件名稱跟在原生事件后面:
// 監(jiān)聽(tīng) click 事件時(shí),帶上自定義的事件
jQuery('.tabs a').on('click tabs-click', function() {
// 切換 tab, 加載內(nèi)容,等等等等 ...
});
// 在最后一個(gè)標(biāo)簽上觸發(fā) "假" 的事件
jQuery('.tabs a').last().trigger('tabs-click');
現(xiàn)在你的事件觸發(fā)器將不再和頁(yè)面上的其他監(jiān)聽(tīng)器起沖突。 保守的開(kāi)發(fā)人員對(duì)我說(shuō),你可能想要避免使用 trigger (其他工具庫(kù)也是一樣的),但好歹你也應(yīng)該添加一個(gè)自定義事件名稱!
相關(guān)文章
jQuery 過(guò)濾方法filter()選擇具有特殊屬性的元素
需要選出所有有背景圖片的元素,使用jQuery的DOM過(guò)濾方法filter(),可以根據(jù)函數(shù)中表達(dá)的任何條件選擇元素,需要的朋友可以參考下2014-06-06jQuery實(shí)現(xiàn)區(qū)域打印功能代碼詳解
這篇文章主要介紹了jQuery實(shí)現(xiàn)區(qū)域打印功能代碼詳解的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06jQuery檢測(cè)返回值的數(shù)據(jù)類(lèi)型
本文給大家介紹的是一種檢測(cè)返回值的數(shù)據(jù)類(lèi)型的方法,有需要的小伙伴可以參考下。2015-07-07JavaScript的jQuery庫(kù)中ready方法的學(xué)習(xí)教程
這篇文章主要介紹了JavaScript的jQuery庫(kù)中ready方法的學(xué)習(xí)教程,包括ready的相關(guān)簡(jiǎn)短寫(xiě)法,rally cool,需要的朋友可以參考下2015-08-08ajax異步刷新實(shí)現(xiàn)更新數(shù)據(jù)庫(kù)
下面寫(xiě)關(guān)于如何把無(wú)刷新的數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)中,需要的朋友可以參考下2012-12-12jQuery插件HighCharts實(shí)現(xiàn)2D柱狀圖、折線圖的組合多軸圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件HighCharts實(shí)現(xiàn)2D柱狀圖、折線圖的組合多軸圖效果,結(jié)合實(shí)例形式分析了jQuery使用HighCharts插件同時(shí)繪制柱狀圖、折線圖的實(shí)現(xiàn)技巧與相關(guān)操作步驟,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03jQuery EasyUI API 中文文檔 - Form表單
jQuery EasyUI API 中文文檔 - Form表單,使用jQuery EasyUI的朋友可以參考下。2011-10-10jQuery關(guān)鍵詞說(shuō)明插件cluetip使用指南
我們?cè)谧鰓eb項(xiàng)目的時(shí)候,經(jīng)常會(huì)使用到提示效果。html自帶的提示效果是label標(biāo)簽的title,但是這個(gè)效果過(guò)于簡(jiǎn)單和難看,并且不方便調(diào)整樣式。今天我偶然發(fā)現(xiàn)個(gè)jQuery的插件,可以很方便的做出漂亮的提示效果。2015-04-04