2 回答

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
jQuery中l(wèi)ive函數(shù):
給指定id或class的元素綁定(bind)事件時(shí),對(duì)于改變或新加的元素,事件不會(huì)起作用,這時(shí)我們就要用live函數(shù),它可以讓子元素繼承父元素的事件。
事件委托
live() 方法能對(duì)一個(gè)還沒(méi)有添加進(jìn)DOM的元素有效,是由于使用了事件委托:綁定在祖先元素上的事件處理函數(shù)可以對(duì)在后代上觸發(fā)的事件作出回應(yīng)。傳遞給 .live() 的事件處理函數(shù)不會(huì)綁定在元素上,而是把他作為一個(gè)特殊的事件處理函數(shù),綁定在 DOM 樹(shù)的根節(jié)點(diǎn)上。在我們的例子中,當(dāng)點(diǎn)擊新的元素后,會(huì)依次發(fā)生下列步驟:
生成一個(gè)click事件傳遞給 <div> 來(lái)處理
由于沒(méi)有事件處理函數(shù)直接綁定在 <div> 上,所以事件冒泡到DOM樹(shù)上
事件不斷冒泡一直到DOM樹(shù)的根節(jié)點(diǎn),默認(rèn)情況下上面綁定了這個(gè)特殊的事件處理函數(shù)。
執(zhí)行由 .live() 綁定的特殊的 click 事件處理函數(shù)。
這個(gè)事件處理函數(shù)首先檢測(cè)事件對(duì)象的 target 來(lái)確定是不是需要繼續(xù)。這個(gè)測(cè)試是通過(guò)檢測(cè) $(event.target).closest('.clickme') 能否找到匹配的元素來(lái)實(shí)現(xiàn)的。
如果找到了匹配的元素,那么調(diào)用原始的事件處理函數(shù)。
由于只有在事件發(fā)生時(shí)才會(huì)在上面的第五步里做測(cè)試,因此在任何時(shí)候添加的元素都能夠響應(yīng)這個(gè)事件。

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
試試這個(gè):
$("#edit"+inId+inFd).live('focus blur', function(event) {
if (event.type == 'focus') {
// do something on focus
} else {
// do something on blur
}
});
添加回答
舉報(bào)