详解jQuery开发之事件源代码的定位
YPE html>
JSå¼åä¸ææ°æ®ç±»åï¼èæ们éè¦æææçæ´æ°åæµ®ç¹è¿è¡åç±»ï¼ä»æ¥ç±ç«ææ¯é¢éå°ç¼å°±æ¥ç»å¤§å®¶è¯¦è§£jQueryå¼åä¹äºä»¶æºä»£ç çå®ä½ï¼å¸æè½å¯¹ä½ å¦ä¹ è¿æ¹é¢ç¥è¯ææ帮å©ã
æ¨å¤©ç¾¤éæ人é®äºä¸ªäºä»¶æºç å®ä½çé®é¢ï¼ç®åæè¿°ä¸æ¯è¿æ ·çã
å¨ä¸ä¸ªä¸æ¯èªå·±åç页é¢ä¸ï¼å¦ä½å¿«éå®ä½å°ä»ç»å®çäºä»¶ä»£ç å¨åªï¼(页é¢ç¨çæ¯jQuery)
è¿ä¸ªé®é¢ï¼è¯´é¾ä¸é¾ï¼è¯´ç®åä¹æ²¡é£ä¹ç®åï¼ä¸ä¸ç¨çæ¯å§æä¹ç±»ä¹ä¼éº»ç¦ç¹ã
å¨ chrome çæ§å¶å°éæ个 Event Listenersï¼è¿éä¼æ¾ç¤ºä½ æéæ©å
ç´ çäºä»¶ï¼å¦ææ¯åçäºä»¶ï¼ä»ä¼ç´æ¥æ¾ç¤ºï¼
ä½ ç¹å»ä¸ä¸äºä»¶å°±ä¼è·³å°å¯¹åºä»£ç éäºï¼å¯æ¯ jQuery ç»å®çäºä»¶å´ä¸æ¯è¿æ ·çï¼ä½ ç¹å»ååªä¼è·³å° jQuery æºç éï¼
minåçjQueryæºç å¯å¯éº»éº»çï¼ççé½ç¼è±ã
å
³äºjQuery对äºäºä»¶ç管çï¼å¤§ç们ä¹åæçé常éå½»äºï¼æå°±ä¸å°å¦äºï¼å 为ä¸æ¯æ们ä»å¤©è¦è¯´çéç¹ã
æ们è¦è¯´çéç¹æ¯æä¹å®ä½å°äºä»¶æºç å¤ãå 为jQueryçæ¬ä¼å¤ï¼èä¸éæè¿å¤æ¬¡ï¼æ以è¦åæ
åµæ¥è¯´äºã
åºæ¬ä¸ 1.2.6-1.8 å 1.9 两ç§æ
åµï¼ç»è¿æµè¯ï¼å¤§ä½ä¸å®ä¸ºä¸é¢2个çæ¬
1.2.6-1.8 ç¨Â  $.data( elem, "events", undefined, true );Â
1.9+ ç¨Â  $._data( elem, "events" );Â
Â
PS:Â ä½ ç°å¨ä¹å¯ä»¥æ F12 æå¼æ§å¶å°ççç»æï¼å½ç¶ä¹å¯ä»¥å¤å¶ä¸é¢çæºç èªå·±æµè¯ã
ç±äºè°·æ被å¢çå害ï¼æ以æcdnæ¢æç¾åº¦çäºã2014-06-07
test
å¦æä¸åºæå¤ï¼ä½ å¯ä»¥å¨æ§å¶å°çå°è¿æ ·çæ¾ç¤ºç»æ
å±å¼åå¯ä»¥çå°ç»å®çå½æ°åæ°éççæ¬åå½åçæ¬æ¯å¯¹åºçã
Â
å¯ä»¥çå°
1.2.6-1.4 åªæ¯æ  $.data( elem, "events", undefined, true );Â
1.5-1.8 两è
é½æ¯æ
1.9-1.11 åªæ¯æ  $._data( elem, "events" );Â
é£ä¹æ们å¯ä»¥å个å½æ°ç®åçå ¼å®¹ä¸ï¼ç¶ä»å ¨å ¼å®¹å³å¯
function lookEvents (elem) { return $.data ? $.data( elem, "events", undefined, true ) : $._data( elem, "events" ); }
ç°å¨è°ç¨ lookEvents å°±å¯ä»¥å¾å°å¯¹åºç events 对象äºã
è½ç¶å¯ä»¥çå°äºæ们ç»å®çèªå®ä¹äºä»¶ï¼ä½è¿æ¯ä¸ç¥éä»å¨åªä¸ªæ件åªä¸è¡åã
ä¸é¢æ们就æ¥å®ä½ä»çå
·ä½ä½ç½®ï¼æä»¬å°±æ¿ 1.7 çè¯è¯ã
PS: ä¸é¢æä½é½æ¯å¨æ§å¶å°å®æï¼æçç¯å¢æ¯ chrome 34
function lookEvents (elem) { return $.data ? $.data( elem, "events", undefined, true ) : $._data( elem, "events" ); } var event = lookEvents($("#testbtn")[0]); // è·åç»å®çäºä»¶ event.click[0].handler // è·åclickäºä»¶ç第ä¸ä¸ªäºä»¶æºç å°å
å¤å¶å°æ§å¶å°ï¼æå车è¿è¡åï¼ä¸åºæå¤å¯ä»¥çå°ä¸é¢è¿ä¸ªç»æã
æ没æçå°å³ä¸è§ç 1.html:36 è¿ä¸ªå°±æ¯æºç æå¨çæ件å对åºçè¡å·äºã
ä½ å¯ä»¥ç´æ¥ç¹å» 1.html:36 è·³å°å¯¹åºç代ç å¤ï¼æ¯ä¸æ¯è§å¾å¾ç»ååã
ä¸é¢æ¹æ³éç¨äº 1.5+ çæ¬ç jQueryï¼å¯¹äº 1.2.6-1.4 ççæ¬ï¼ç¨å¾®æç¹ä¸åï¼ä¸è¿ä¹é常ç®åã
function lookEvents (elem) { return $.data ? $.data( elem, "events", undefined, true ) : $._data( elem, "events" );}var event = lookEvents($("#testbtn")[0]); // è·åç»å®çäºä»¶event.click; // æ¥çæå 个clickäºä»¶ï¼å¦æè¦æ¥çå ¶ä»äºä»¶ç´æ¥è¾å ¥ event ç¶åå车å³å¯
ä¸é¢çå°çç¼ç å°±æ¯å¯¹åºäºä»¶å¥æäºï¼æ¯å¦æè¿ç 1ï¼2 äºä»¶(å¦ä¸å¾æ¾ç¤º), è¿ä¸ªç¼å·ä¸æ¯æ顺åºçï¼è¿ä¸ªè¦æ³¨æã
 event.click[1] // è·åclickäºä»¶ç idæ¯1 çäºä»¶æºç å°åÂ
ä¸åºæå¤å¯ä»¥çå°ä¸é¢è¿ä¸ªç»æã
å ³äºè¯¦è§£jQueryå¼åä¹äºä»¶æºä»£ç çå®ä½ï¼ç±ç«ææ¯é¢éå°ç¼å°±ä»ç»å°è¿éäºï¼å¸æè½å¸®å°æéè¦çæå们ï¼è¥æ¯æ³è·å¾æ´å¤ä¸ä¸ç¥è¯ï¼æ¬è¯·æå¾ js.aizhan.comçåç»æ´æ°ã