成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

jQuery最佳實踐:精妙的自定義事件

開發(fā) 開發(fā)工具
本文以作者實際應(yīng)用開發(fā)過程中遇到的一個例子說明“什么時候用jQuery的自定義事件以及怎么用”,希望可以拋磚引玉,對廣大JavaScript開發(fā)者有所幫助。

對于jQuery自定義事件,很多JavaScript開發(fā)者都會有所疑惑:在日常開發(fā)過程中會不會用到呢?而本文將結(jié)合一個開發(fā)案例,其中的一些地方應(yīng)用到了jQuery的自定義事件,而且達(dá)到了很好的效果-精簡代碼的同時充分利用了OO的原則。

51CTO推薦專題: jQuery從入門到精通

問題

一個復(fù)選框X,你如何便捷地觸發(fā)它的click事件的處理邏輯,但是又不改變它當(dāng)前的選中狀態(tài)?

答案

其實沒有什么標(biāo)準(zhǔn)答案,用傳統(tǒng)的方式,寫一個函數(shù):

  1. var onClick=function(dom){//復(fù)選框x的Click事件的處理邏輯}; 
  2.  

當(dāng)僅僅需要執(zhí)行處理邏輯而不改變復(fù)選框的狀態(tài)時:

  1. onClick(X);//X引用復(fù)選框 
  2.  

為了響應(yīng)用戶直接點擊復(fù)選框,你還需要為復(fù)選框X添加相應(yīng)的Click處理函數(shù):

  1. $(X).click(function(evt){  //執(zhí)行處理邏輯  onClick(this);});
  2.  

但是,我要說的是,這里可以利用自定義事件處理函數(shù)封裝復(fù)選框Click事件的處理邏輯!然后觸發(fā)該自定義事件。而且個人覺得具有必要性和優(yōu)點:

1,onClick的邏輯是屬于復(fù)選框自身的,沒有必要用一個全局方法來定義并剝離復(fù)選框?qū)ο蟆?/strong>

從面向?qū)ο蟮慕嵌日f,對象由屬性和行為(方法)構(gòu)成,所以onClick的邏輯可以封裝在復(fù)選框的作用域(context)內(nèi)。

2,充分利用匿名函數(shù),減少全局變量或者函數(shù)的數(shù)量,有利于提高腳本的執(zhí)行效率。

代碼示例

1,首先定義一個變量$x引用緩存我們的復(fù)選框?qū)ο蟆_@點非常重要但很多js開發(fā)員沒有意識到:每調(diào)用一次jQuery的$方法選中某個元素=遍歷一次html dom樹。所以要學(xué)會利用JavaScript變量緩存對象。

  1. var $x=$(X); 
  2.  

2,定義一個自定義事件evtClick,封裝處理邏輯。

  1. $x.bind("evtClick",function(evt){    //onClick的處理邏輯}); 
  2.  

3,當(dāng)要執(zhí)行處理邏輯又不想改變復(fù)選框的選中狀態(tài)時,利用trigger方法觸發(fā)evtClick事件。

 

  1. $x.trigger("evtClick"); 
  2.  

4,click事件。

  1. $x.click(function(evt){  $x.trigger("evtClick");});
  2.  

jQuery觸發(fā)自定義事件并傳參

  1. $("input").bind("myevent",function(event,msg1,msg2){     
  2.             alert("msg1:"+msg1);     
  3.         })     
  4.     
  5.     
  6.         $("input").click(function(){     
  7.                 $("input").trigger("myevent",["avalue","bvalue"])     
  8.             });    
  9.  
  10. $("input").bind("myevent",function(event,msg1,msg2){  
  11.    alert("msg1:"+msg1);  
  12.   })  
  13.  
  14.  
  15.   $("input").click(function(){  
  16.     $("input").trigger("myevent",["avalue","bvalue"])  
  17.    });    
  18.  

自定義事件:

  1. var Common = {};         
  2.     Common.Dialog = function(config){};     
  3.     Common.Dialog.prototype = {     
  4.         height:310,     
  5.         init: function(){     
  6.             jQuery.event.trigger("submit");     
  7.         }     
  8.     };     
  9.     
  10.     
  11. var dlg = new Common.Dialog({height:200});     
  12.         $(dlg).bind("submit",function(){alert("submit event")});     
  13.         dlg.init();  

 

【編輯推薦】

  1. 不只是口號 jQuery的設(shè)計藝術(shù)
  2. jQuery四大天王:核心函數(shù)詳解
  3. jQuery中10個強(qiáng)大的遍歷函數(shù)
  4. 拋磚引玉 自定義jQuery擴(kuò)展接口
  5. 即刻提升jQuery性能的十個技巧
責(zé)任編輯:王曉東 來源: 博客園
相關(guān)推薦

2017-05-19 10:03:31

AndroidBaseAdapter實踐

2017-05-18 12:36:16

android萬能適配器列表視圖

2015-06-24 10:07:34

Java編碼最佳實踐

2011-08-18 11:05:21

jQuery

2009-08-04 09:56:46

C#事件處理自定義事件

2022-05-07 10:22:32

JavaScript自定義前端

2023-12-21 09:00:21

函數(shù)React 組件useEffect

2009-08-04 12:56:51

C#自定義事件

2009-08-04 13:53:58

C#委托類C#事件

2009-09-03 15:46:57

C#自定義事件

2010-08-13 11:34:54

Flex自定義事件

2025-01-22 11:10:34

2009-08-04 13:31:35

C#自定義事件

2021-08-11 14:29:20

鴻蒙HarmonyOS應(yīng)用

2021-02-18 08:19:21

Vue自定義Vue 3.0

2009-08-04 12:40:34

c#自定義事件

2025-05-15 07:11:51

2012-05-25 12:57:31

Windows Pho

2018-09-28 05:18:41

2012-11-19 11:07:42

IBMdw
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 中文字幕人成乱码在线观看 | 久久精品久久久久久 | 日韩综合在线播放 | 久久精品国产99国产 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 亚洲国产成人久久综合一区,久久久国产99 | 亚洲va欧美va天堂v国产综合 | 天天干天天爱天天 | 天天人人精品 | 91久久 | 欧美成人精品一区 | 99国产精品视频免费观看一公开 | 色视频在线播放 | 伊人婷婷 | 久久影音先锋 | 久久高清 | h在线播放 | 热久久免费视频 | 免费观看毛片 | 一级毛片免费完整视频 | 99精品一级欧美片免费播放 | 久久视频一区 | 日日操网站 | 精品在线视频播放 | 日本激情视频中文字幕 | 中文字幕中文字幕 | www.国产| 91av在线免费 | 国产探花在线精品一区二区 | 国产黄色一级片 | 日日日色 | 黄色一级电影在线观看 | 免费毛片网站 | 不卡视频一区二区三区 | 全部免费毛片在线播放网站 | 97精品久久 | 亚洲视频免费 | 九九久久这里只有精品 | 成人精品久久 | 国产视频日韩 | 欧美一区不卡 |