溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

對(duì)jQuery中on方法委托事件的理解

發(fā)布時(shí)間:2020-10-11 15:02:41 來(lái)源:網(wǎng)絡(luò) 閱讀:3839 作者:qz357 欄目:web開(kāi)發(fā)

關(guān)于on方法中的委托事件,官方JQ API如下:

http://api.jquery.com/on/#on-events-selector-data-handler

參考大牛阮一峰的博文:

http://www.ruanyifeng.com/blog/2011/08/jquery_best_practices.html


什么時(shí)候使用委托事件:

1.對(duì)未被創(chuàng)建的元素添加事件監(jiān)聽(tīng)

2.避免頻繁添加或刪除event handler,委托父元素來(lái)進(jìn)行事件處理


使用委托事件的優(yōu)點(diǎn):

1.大量減少監(jiān)聽(tīng)元素的開(kāi)銷(xiāo)


使用實(shí)例

$( "#dataTable tbody" ).on( "click", "tr", function() {
  console.log( $( this ).text() );
});

使用后果,不用每個(gè)tr都進(jìn)行事件綁定,只需要在tbody處進(jìn)行綁定即可,委托tbody進(jìn)行對(duì)tr點(diǎn)擊的響應(yīng)。


對(duì)于on的第二個(gè)參數(shù),官方API的解釋是:對(duì)觸發(fā)事件元素的后代元素的過(guò)濾

個(gè)人理解:

過(guò)濾之后,this變成tr,事件冒泡到tbody,然后對(duì)tr進(jìn)行操作。

其實(shí)on的底層是用了addEventListener,所謂的委托,其實(shí)就是借用事件冒泡機(jī)制,而且可以指定event.target和event.currentTarget(==this)來(lái)指定哪個(gè)事件對(duì)象





向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI