jQueryäºä»¶çç»å®åå§æå¯ä»¥ç¨å¤ç§æ¹æ³å®ç°ï¼on() ã bind() ã live() ã delegate() ï¼è¿æone()ã
ææ¶æ们å¯è½ä¼åä¸é¢è¿æ ·ç»å®ä¸ä¸ªäºä»¶ï¼
å¤å¶ä»£ç 代ç å¦ä¸:
$("#div1").click(function() {
alert("ç¹å»å触å");
});
ä¸é¢çäºä»¶ç»å®ï¼æ们å¯ä»¥éè¿å¤ç§æ¹å¼å»å®ç°ï¼
1. on()
å¤å¶ä»£ç 代ç å¦ä¸:
//æ æ°æ®åæ°
$("p").on("click", function(){
alert( $(this).text() );
});
//ææ°æ®åæ°
function myHandler(event) {
alert(event.data.foo);
}
$("p").on("click", {foo: "bar"}, myHandler)
ä¸on()对åºçæ¯off()ï¼ç¨æ¥ç§»é¤äºä»¶ç»å®ï¼
å¤å¶ä»£ç 代ç å¦ä¸:
var foo = function () {
// code to handle some kind of event
};
// ... now foo will be called when paragraphs are clicked ...
$("body").on("click", "p", foo);
// ... foo will no longer be called.
$("body").off("click", "p", foo);
off()ï¼ç§»é¤on()è¿è¡çç»å®
one()ï¼åªç»å®ä¸æ¬¡ã
2. bind()
åæ°ï¼
(type,[data],function(eventObject))
type: å«æä¸ä¸ªæå¤ä¸ªäºä»¶ç±»åçå符串ï¼ç±ç©ºæ ¼åéå¤ä¸ªäºä»¶ãæ¯å¦"click"æ"submit"ï¼è¿å¯ä»¥æ¯èªå®ä¹äºä»¶åã
data:ä½ä¸ºevent.dataå±æ§å¼ä¼ éç»äºä»¶å¯¹è±¡çé¢å¤æ°æ®å¯¹è±¡
fn:ç»å®å°æ¯ä¸ªå¹é
å
ç´ çäºä»¶ä¸é¢çå¤çå½æ°
(type,[data],false)
type:å«æä¸ä¸ªæå¤ä¸ªäºä»¶ç±»åçå符串ï¼ç±ç©ºæ ¼åéå¤ä¸ªäºä»¶ãæ¯å¦"click"æ"submit"ï¼è¿å¯ä»¥æ¯èªå®ä¹äºä»¶åã
data:ä½ä¸ºevent.dataå±æ§å¼ä¼ éç»äºä»¶å¯¹è±¡çé¢å¤æ°æ®å¯¹è±¡
false: å°ç¬¬ä¸ä¸ªåæ°è®¾ç½®ä¸ºfalseä¼ä½¿é»è®¤çå¨ä½å¤±æã
åæ¶ç»å®å¤ä¸ªäºä»¶ç±»å:
å¤å¶ä»£ç 代ç å¦ä¸:
$('#foo').bind('mouseenter mouseleave', function() {
$(this).toggleClass('entered');
});
åæ¶ç»å®å¤ä¸ªäºä»¶ç±»å/å¤çç¨åº:
å¤å¶ä»£ç 代ç å¦ä¸:
$("button").bind({
click:function(){$("p").slideToggle();},
mouseover:function(){$("body").css("background-color","red");},
mouseout:function(){$("body").css("background-color","#FFFFFF");}
});
ä½ å¯ä»¥å¨äºä»¶å¤çä¹åä¼ éä¸äºéå çæ°æ®ã
å¤å¶ä»£ç 代ç å¦ä¸:
function handler(event) {
alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)
éè¿è¿åfalseæ¥åæ¶é»è®¤çè¡ä¸ºå¹¶é»æ¢äºä»¶èµ·æ³¡ã
å¤å¶ä»£ç 代ç å¦ä¸:
$("form").bind("submit", function() { return false; })
bindåå¨çé®é¢
å¦æè¡¨æ ¼ä¸è¦ç»å®åå»äºä»¶çæ10å500è¡ï¼é£ä¹æ¥æ¾åéå5000个åå
æ ¼ä¼å¯¼è´èæ¬æ§è¡é度ææ¾åæ
¢ï¼èä¿å5000个tdå
ç´ åç¸åºçäºä»¶å¤çç¨åºä¹ä¼å ç¨å¤§éå
åï¼ç±»ä¼¼äºè®©æ¯ä¸ªäººäº²èªç«å¨é¨å£çå¿«éï¼ã
å¨åé¢è¿ä¸ªä¾åçåºç¡ä¸ï¼å¦ææ们æ³å®ç°ä¸ä¸ªç®åçç¸ååºç¨ï¼æ¯é¡µåªæ¾ç¤º50å¼ ç
§çç缩ç¥å¾ï¼50个åå
æ ¼ï¼ï¼ç¨æ·ç¹å»â第x页âï¼æâä¸ä¸é¡µâï¼é¾æ¥å¯ä»¥éè¿Ajaxä»æå¡å¨å¨æå è½½å¦å¤50å¼ ç
§çãå¨è¿ç§æ
åµä¸ï¼ä¼¼ä¹ä½¿ç¨.bind()æ¹æ³ä¸º50个åå
æ ¼ç»å®äºä»¶åå¯ä»¥æ¥åäºã
äºå®å´ä¸ç¶ã使ç¨.bind()æ¹æ³åªä¼ç»ç¬¬ä¸é¡µä¸ç50个åå
æ ¼ç»å®åå»äºä»¶ï¼å¨æå è½½çåç»é¡µé¢ä¸çåå
æ ¼é½ä¸ä¼æè¿ä¸ªåå»äºä»¶ãæ¢å¥è¯è¯´ï¼.bind()åªè½ç»è°ç¨å®çæ¶åå·²ç»åå¨çå
ç´ ç»å®äºä»¶ï¼ä¸è½ç»æªæ¥æ°å¢çå
ç´ ç»å®äºä»¶ï¼ç±»ä¼¼äºæ°æ¥çåå·¥æ¶ä¸å°å¿«éï¼ã
äºä»¶å§æå¯ä»¥è§£å³ä¸è¿°ä¸¤ä¸ªé®é¢ãå
·ä½å°ä»£ç ä¸ï¼åªè¦ç¨jQuery 1.3æ°å¢ç.live()æ¹æ³ä»£æ¿.bind()æ¹æ³å³å¯ï¼
å¤å¶ä»£ç 代ç å¦ä¸:
$("#info_table td").live("click",function(){/*æ¾ç¤ºæ´å¤ä¿¡æ¯*/});
è¿éç.live()æ¹æ³ä¼æclickäºä»¶ç»å®å°$(document)对象ï¼ä½è¿ä¸ç¹ä»ä»£ç ä¸ä½ç°ä¸åºæ¥ï¼è¿ä¹æ¯.live()æ¹æ³é¥±åè¯ç
çä¸ä¸ªéè¦åå ï¼ç¨åå详ç»è®¨è®ºï¼ï¼èä¸åªéè¦ç»$(document)ç»å®ä¸æ¬¡ï¼ä¸æ¯50次ï¼æ´ä¸æ¯5000次ï¼ï¼ç¶åå°±è½å¤å¤çåç»å¨æå è½½çç
§çåå
æ ¼çåå»äºä»¶ãå¨æ¥æ¶å°ä»»ä½äºä»¶æ¶ï¼$(document)对象é½ä¼æ£æ¥äºä»¶ç±»ååäºä»¶ç®æ ï¼å¦ææ¯clickäºä»¶ä¸äºä»¶ç®æ æ¯tdï¼é£ä¹å°±æ§è¡å§æç»å®çå¤çç¨åºã
unbind()ï¼ç§»é¤bindè¿è¡çç»å®ã
3. live()
å°ç®å为æ¢ï¼ä¸åä¼¼ä¹å¾å®ç¾ãå¯æï¼äºå®å¹¶éå¦æ¤ãå 为.live()æ¹æ³å¹¶ä¸å®ç¾ï¼å®æå¦ä¸å 个主è¦ç¼ºç¹ï¼
$()å½æ°ä¼æ¾å°å½å页é¢ä¸çæætdå
ç´ å¹¶å建jQuery对象ï¼ä½å¨ç¡®è®¤äºä»¶ç®æ æ¶å´ä¸ç¨è¿ä¸ªtdå
ç´ éåï¼èæ¯ä½¿ç¨éæ©ç¬¦è¡¨è¾¾å¼ä¸event.targetæå
¶ç¥å
å
ç´ è¿è¡æ¯è¾ï¼å èçæè¿ä¸ªjQuery对象ä¼é æä¸å¿
è¦çå¼éï¼
é»è®¤æäºä»¶ç»å®å°$(document)å
ç´ ï¼å¦æDOMåµå¥ç»æå¾æ·±ï¼äºä»¶å泡éè¿å¤§éç¥å
å
ç´ ä¼å¯¼è´æ§è½æ失ï¼
åªè½æ¾å¨ç´æ¥éæ©çå
ç´ åé¢ï¼ä¸è½å¨è¿ç¼çDOMéåæ¹æ³åé¢ä½¿ç¨ï¼å³$("#info_table td").live...å¯ä»¥ï¼ä½$("#info_table").find("td").live...ä¸è¡ï¼
æ¶étdå
ç´ å¹¶å建jQuery对象ï¼ä½å®é
æä½çå´æ¯$(document)对象ï¼ä»¤äººè´¹è§£ã
解å³ä¹é
为äºé¿å
çæä¸å¿
è¦çjQuery对象ï¼å¯ä»¥ä½¿ç¨ä¸ç§å«åâæ©å§æâçhackï¼å³å¨$(document).ready()æ¹æ³å¤é¨è°ç¨.live()ï¼
å¤å¶ä»£ç 代ç å¦ä¸:
(function($){
$("#info_table td").live("click",function(){/*æ¾ç¤ºæ´å¤ä¿¡æ¯*/});
})(jQuery);
å¨æ¤ï¼(function($){...})(jQuery)æ¯ä¸ä¸ªâç«å³æ§è¡çå¿åå½æ°âï¼ææäºä¸ä¸ªéå
ï¼å¯ä»¥é²æ¢å½åå²çªãå¨å¿åå½æ°å
é¨ï¼$åæ°å¼ç¨jQuery对象ãè¿ä¸ªå¿åå½æ°ä¸ä¼çå°DOM就绪就ä¼æ§è¡ã注æï¼ä½¿ç¨è¿ä¸ªhackæ¶ï¼èæ¬å¿
é¡»æ¯å¨é¡µé¢çheadå
ç´ ä¸é¾æ¥å(æ)æ§è¡çãä¹æ以éæ©è¿ä¸ªæ¶æºï¼å 为è¿æ¶åå好documentå
ç´ å¯ç¨ï¼èæ´ä¸ªDOMè¿è¿æªçæï¼å¦ææèæ¬æ¾å¨ç»æçbodyæ ç¾åé¢ï¼å°±æ²¡ææä¹äºï¼å 为é£æ¶åDOMå·²ç»å®å
¨å¯ç¨äºã
为äºé¿å
äºä»¶å泡é æçæ§è½æ失ï¼jQueryä»1.4å¼å§æ¯æå¨ä½¿ç¨.live()æ¹æ³æ¶é
å使ç¨ä¸ä¸ªä¸ä¸æåæ°ï¼
å¤å¶ä»£ç 代ç å¦ä¸:
$("td",$("#info_table")[0]).live("click",function(){/*æ¾ç¤ºæ´å¤ä¿¡æ¯*/});
è¿æ ·ï¼âåææ¹âå°±ä»é»è®¤ç$(document)åæäº$("#info_table")[0]ï¼èçäºå泡çæ
ç¨ãä¸è¿ï¼ä¸.live()å
±å使ç¨çä¸ä¸æåæ°å¿
é¡»æ¯ä¸ä¸ªåç¬çDOMå
ç´ ï¼æ以è¿éæå®ä¸ä¸æ对象æ¶ä½¿ç¨çæ¯$("#info_table")[0]ï¼å³ä½¿ç¨æ°ç»çç´¢å¼æä½ç¬¦æ¥åå¾çä¸ä¸ªDOMå
ç´ ã
4. delegate()
å¦åæè¿°ï¼ä¸ºäºçªç ´åä¸.bind()æ¹æ³çå±éæ§ï¼å®ç°äºä»¶å§æï¼jQuery 1.3å¼å
¥äº.live()æ¹æ³ãåæ¥ï¼ä¸ºè§£å³âäºä»¶ä¼ æé¾âè¿é¿çé®é¢ï¼jQuery 1.4åæ¯æ为.live()æ¹æ³æå®ä¸ä¸æ对象ãè为äºè§£å³æ è°çæå
ç´ éåçé®é¢ï¼jQuery 1.4.2å¹²èç´æ¥å¼å
¥äºä¸ä¸ªæ°æ¹æ³.delegate()ã
使ç¨.delegate()ï¼åé¢çä¾åå¯ä»¥è¿æ ·åï¼
å¤å¶ä»£ç 代ç å¦ä¸:
$("#info_table").delegate("td","click",function(){/*æ¾ç¤ºæ´å¤ä¿¡æ¯*/});
使ç¨.delegate()æå¦ä¸ä¼ç¹ï¼æè
说解å³äº.live()æ¹æ³çå¦ä¸é®é¢ï¼ï¼
ç´æ¥å°ç®æ å
ç´ éæ©ç¬¦ï¼"td"ï¼ãäºä»¶ï¼"click"ï¼åå¤çç¨åºä¸âåææ¹â$("#info_table")ç»å®ï¼ä¸é¢å¤æ¶éå
ç´ ãäºä»¶ä¼ æè·¯å¾ç¼©çãè¯ä¹æç¡®ï¼
æ¯æå¨è¿ç¼çDOMéåæ¹æ³åé¢è°ç¨ï¼å³æ¯æ$("table").find("#info").delegate...ï¼æ¯æ精确æ§å¶ï¼
å¯è§ï¼.delegate()æ¹æ³æ¯ä¸ä¸ªç¸å¯¹å®ç¾ç解å³æ¹æ¡ãä½å¨DOMç»æç®åçæ
åµä¸ï¼ä¹å¯ä»¥ä½¿ç¨.live()ã
æ示ï¼ä½¿ç¨äºä»¶å§ææ¶ï¼å¦æ注åå°ç®æ å
ç´ ä¸çå
¶ä»äºä»¶å¤çç¨åºä½¿ç¨.stopPropagation()é»æ¢äºäºä»¶ä¼ æï¼é£ä¹äºä»¶å§æå°±ä¼å¤±æã
undelegate(): 移é¤delegateçç»å®
温馨提示:答案为网友推荐,仅供参考