JavaScript 框架提供了如此多的功能,以至于一不小心就會掉進坑里去。 對工具庫依賴得越多,在修改或維護時一個小小的改的很可能就會影響到其他的功能(俗稱 處處是地雷,走路需謹慎),特別是維護多年前的遺留代碼時。 我經常看到的一個錯誤是關于 jQuery的 trigger, trigger允許開發者手動觸發某些事件。 這個功能真的非常強大與好用,但是請遵守約定,不要觸發JS中那些原生的事件名稱!
注:我知道,其他JS框架也提供這種功能 —— 我只用jQuery作為一個例子,因為我看到了它的受歡迎程度,最近又剛好碰上這個問題。 而所有工具類庫都有可能引發同樣的問題。 比如 MooTools使用 的 fireEvent 等。
下面是使用 trigger 來完成任務的一個典型例子:
復制代碼 代碼如下:
// 監聽 click 事件
jQuery('.tabs a').on('click', function() {
// 執行某些操作,比如切換界面,加載內容等..
});
// 在最后一個 a 標簽上觸發 click 事件
jQuery('.tabs a').last().trigger('click');
復制代碼 代碼如下:
// 監聽 body 內部的所有 click 事件
jQuery('body').on('click', 'a', function() {
// 此處可以進行一些業務邏輯處理 ...
// 滿足條件(Condition met), 則進行另外一些操作!
if(conditionMet) {
// 刷新頁面?
// 打開子菜單?
// 提交表單?
// ... 燈燈蹬蹬,Intel
}
});
復制代碼 代碼如下:
// 監聽 click 事件時,帶上自定義的事件
jQuery('.tabs a').on('click tabs-click', function() {
// 切換 tab, 加載內容,等等等等 ...
});
// 在最后一個標簽上觸發 "假" 的事件
jQuery('.tabs a').last().trigger('tabs-click');
新聞熱點
疑難解答
圖片精選