JQuery事件委托

JavaScript(jQuery)中的事件委托

一:什么是事件委托?

? ? 事件委托是利用事件冒泡,只指定一個(gè)事件處理程序來(lái)管理某一類型的所有事件。

二:為什么要用事件委托?

? ? 1.在JavaScript中添加到頁(yè)面上的事件處理程序的個(gè)數(shù)直接關(guān)系到頁(yè)面的整體運(yùn)行性能。為什么呢?因?yàn)椋總€(gè)事件處理函數(shù)都是對(duì)象,對(duì)象會(huì)占用內(nèi)存,內(nèi)存中的對(duì)象越多,性能就越差。此外,必須事先指定所有的事件處理程序而導(dǎo)致的DOM訪問(wèn)次數(shù),會(huì)延遲整個(gè)頁(yè)面的交互就緒時(shí)間。

? ? 2.對(duì)有很多個(gè)數(shù)據(jù)的表格以及很長(zhǎng)的列表逐個(gè)添加事件,簡(jiǎn)直就是噩夢(mèng)。所以事件委托,能極大地提高頁(yè)面的運(yùn)行性能,減少開(kāi)發(fā)人員的工作量。

三:JavaScript中的例子

? ? ? 我們以下面的HTML代碼為例,用事件委托的方式實(shí)現(xiàn)當(dāng)鼠標(biāo)單擊某個(gè)li元素的時(shí)候,li元素的背景變成紅色。


?下面是JavaScript代碼:


單擊列表4,實(shí)現(xiàn)效果:




?三:jQuery中的例子


? ? jQuery中的事件委托方式比較豐富,就以同樣的例子來(lái)說(shuō):


? ?1、用on方法,代碼如下:

1

2.用delegate()方法,代碼如下:


on()方法和delegate()方法對(duì)于事件委托的寫法很像。并且執(zhí)行事件委托的時(shí)候只有子元素(本文中的li)會(huì)觸發(fā)事件,而代為執(zhí)行的父元素(本文中為ul)不會(huì)觸發(fā)事件,所以我們不需要盤判斷觸發(fā)事件的元素節(jié)點(diǎn)名,這一點(diǎn)明顯優(yōu)于原生的JavaScript。

3.用bind()方法,代碼如下:


bind()方法同原生的JavaScript實(shí)現(xiàn)方法一樣,當(dāng)父元素代子元素執(zhí)行事件時(shí),父元素也會(huì)觸發(fā)事件,所以我們需要判斷一下觸發(fā)事件的元素名。此外,用bind()方法給元素綁定事件的時(shí)候要注意,它只能給已經(jīng)存在DOM元素添加事件,不能給未來(lái)存在DOM

元素添加添加事件。如果要頻繁地添加DOM元素,并且給新添加的DOM元素綁定事件的話,用live(),delegate(),on()等方法。鑒于jQuery從1.7之后就不推薦live()和delegate()方法了,所以大家還是使用on()方法吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,684評(píng)論 1 11
  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點(diǎn)的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點(diǎn)是DOM的常...
    凜0_0閱讀 1,504評(píng)論 0 8
  • http://www.jb51.net/article/57827.htm bind: 3.0- 表格中要綁定單擊...
    beforerFE閱讀 1,395評(píng)論 0 1
  • $HTML, HTTP,web綜合問(wèn)題 1、前端需要注意哪些SEO 2、 的title和alt有什么區(qū)別 3、HT...
    Hebborn_hb閱讀 4,771評(píng)論 0 20
  • 你走的第二十七天,還有86天。 我和你在一起,又分離。 我愛(ài)你!
    rainll閱讀 168評(píng)論 0 0

友情鏈接更多精彩內(nèi)容