欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript的事件代理如何實(shí)現(xiàn)

本篇內(nèi)容介紹了“JavaScript的事件代理如何實(shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

10多年的白朗網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整白朗建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“白朗網(wǎng)站設(shè)計(jì)”,“白朗網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

JavaScript事件代理則是一種簡(jiǎn)單的技巧,通過(guò)它你可以把事件處理器添加到一個(gè)父級(jí)元素上,這樣就避免了把事件處理器添加到多個(gè)子級(jí)元素上。

它是怎么運(yùn)作的呢?

事件代理用到了兩個(gè)在JavaSciprt事件中常被忽略的特性:事件冒泡以及目標(biāo)元素。當(dāng)一個(gè)元素上的事件被觸發(fā)的時(shí)候,比如說(shuō)鼠標(biāo)點(diǎn)擊了一個(gè)按鈕,同樣的事件將會(huì)在那個(gè)元素的所有祖先元素中被觸發(fā)。這一過(guò)程被稱為事件冒泡;這個(gè)事件從原始元素開(kāi)始一直冒泡到DOM樹(shù)的最上層。對(duì)任何一個(gè)事件來(lái)說(shuō),其目標(biāo)元素都是原始元素,在我們的這個(gè)例子中也就是按鈕。目標(biāo)元素它在我們的事件對(duì)象中以屬性的形式出現(xiàn)。使用事件代理的話我們可以把事件處理器添加到一個(gè)元素上,等待事件從它的子級(jí)元素里冒泡上來(lái),并且可以很方便地判斷出這個(gè)事件是從哪個(gè)元素開(kāi)始的。

這對(duì)我有什么好處呢?

想象一下現(xiàn)在我們有一個(gè)10列、100行的HTML表格,你希望在用戶點(diǎn)擊某一單元格的時(shí)候做點(diǎn)什么。比如說(shuō)有一次我就需要讓表格中的每一個(gè)單元格在被點(diǎn)擊的時(shí)候變成可編輯狀態(tài)。如果把事件處理器加到這1000個(gè)單元格將會(huì)產(chǎn)生一個(gè)很大的性能問(wèn)題,并且有可能導(dǎo)致內(nèi)存泄露甚至是瀏覽器的崩潰。相反地,使用事件代理的話,你只需要把一個(gè)事件處理器添加到table元素上就可以了,這個(gè)函數(shù)可以把點(diǎn)擊事件給截下來(lái),并且判斷出是哪個(gè)單元格被點(diǎn)擊了。

用代碼寫(xiě)出來(lái)的話是什么樣呢?

代碼很簡(jiǎn)單,我們所要關(guān)心的只是如何檢測(cè)目標(biāo)元素而已。比方說(shuō)我們有一個(gè)table元素,ID是“report”,我們?yōu)檫@個(gè)表格添加一個(gè)事件處理器以調(diào)用editCell函數(shù)。editCell函數(shù)需要判斷出傳到table來(lái)的事件的目標(biāo)元素??紤]到我們要寫(xiě)的函數(shù)中可能會(huì)重復(fù)用到這一功能,所以我們把它單獨(dú)放到一個(gè)名為getEventTarget的函數(shù)中:

function getEventTarget(e) {
  e = e || window.event;
  return e.target || e.srcElement;
}

e這個(gè)變量表示的是一個(gè)事件對(duì)象,我們只需要寫(xiě)一點(diǎn)點(diǎn)跨瀏覽器的代碼來(lái)返回目標(biāo)元素。在IE里目標(biāo)元素放在srcElement屬性中,而在其它瀏覽器里則是target屬性。

接下來(lái)就是editCell函數(shù)了,這個(gè)函數(shù)調(diào)用到了getEventTarget函數(shù)。一旦我們得到了目標(biāo)元素之后,剩下的事情就是看看它是否是我們所需要的那個(gè)元素了。

function editCell(e) {
  var target = getEventTarget(e);
  if(target.tagName.toLowerCase() === 'td') {
    // DO SOMETHING WITH THE CELL
  }
}

在editCell函數(shù)中,我們通過(guò)檢查目標(biāo)元素標(biāo)簽名稱的方法來(lái)確定它是否是一個(gè)表格的單元格。這種檢查也許過(guò)于簡(jiǎn)單了點(diǎn);如果它是這個(gè)目標(biāo)元素單元格里的另一個(gè)元素呢?我們需要為代碼做一點(diǎn)快速修改以便于其找出我們所需要的那個(gè)父級(jí)的td元素。如果說(shuō)有些單元格不需要被編輯怎么辦呢?此種情況下我們可以為那些不可編輯的單元格添加一個(gè)指定的樣式名稱,然后在把單元格變成可編輯狀態(tài)之前先檢查它是否不包含那個(gè)樣式名稱。選擇總是多樣化的,你只需找到適合你應(yīng)用程序的那一種就可以了。

有哪些優(yōu)點(diǎn)和缺點(diǎn)呢?

JavaScript事件代理帶來(lái)的好處有:

◆那些需要?jiǎng)?chuàng)建的以及駐留在內(nèi)存中的事件處理器少了。這是很重要的一點(diǎn),我們得到了性能上的提升,同時(shí)降低了崩潰的風(fēng)險(xiǎn)。

◆在DOM更新后無(wú)須重新綁定事件處理器了。如果你的頁(yè)面是動(dòng)態(tài)生成的,比如說(shuō)通過(guò)Ajax,你不需要再在元素被載入或者卸載的時(shí)候來(lái)添加或者刪除事件處理器了。

◆潛在的問(wèn)題也許并不那么明顯,但是一旦你注意到這些問(wèn)題,你就可以輕松地避免它們:

◆你的事件管理代碼有成為性能瓶頸的風(fēng)險(xiǎn),所以盡量使它能夠短小精悍。

◆不是所有的事件都能冒泡的。blur、focus、load和unload不能像其它事件一樣冒泡。事實(shí)上blur和focus可以用事件捕獲而非事件冒泡的方法獲得(在非IE的瀏覽器中),不過(guò)我們改天再說(shuō)這個(gè)吧。

◆在管理鼠標(biāo)事件的時(shí)候有些需要注意的地方。如果你的代碼處理mousemove事件的話你遇上性能瓶頸的風(fēng)險(xiǎn)可就大了,因?yàn)閙ousemove事件觸發(fā)得非常頻繁。而mouseout則因?yàn)槠涔之惖谋憩F(xiàn)而變得很難用事件代理來(lái)管理。

“JavaScript的事件代理如何實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

當(dāng)前名稱:JavaScript的事件代理如何實(shí)現(xiàn)
網(wǎng)站地址:http://aaarwkj.com/article12/gjdggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)服務(wù)器托管、做網(wǎng)站電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
四虎最新地址在线观看| 色呦呦中文字幕在线播放| 日本亚洲中文字幕无吗| 日本高清一区二区网站| 国产黄色免费精品网站| 青青草原在线视频一区| 国产交换精品一区二区三区| 丁香婷婷综合激情五月| 国产精品欧美久久久久无| av在线免费观看不卡| 日韩黄色一级片免费看| 啊啊…嗯嗯…用力免费观看视频 | 日韩亚洲一区二区免费| 亚洲精品成人一区不卡| 欧美黄片精品在线观看| 伦理中文字幕一区二区| 成人av在线天堂一区二区三区| 国产乱码精品一区二区三区爽爽爽| 丝袜美腿诱惑国产在线| 91好色视频在线观看| av东京热狠狠男人的天堂| 日本在线人妻中文字幕| 国产成人三级在线影院| 日韩中文字幕 在线播放| 日本免费在线不卡一区二区| 午夜在线精品福利视频| 久久九特黄的免费大片| 天天操操操操操操夜夜爽| 亚洲av乱码毛片在线播放| 国产日韩手机在线不卡视频| 国产精品国产不卡在线| 九九热99这里有精品| 丁香婷婷深情五月亚洲天堂| 欧美乱码中文字幕在线观看| 国产日韩欧美国产精品| 亚洲一区二区三区四区五区六| 久久亚洲欧洲日本韩国欧美| 精品亚洲天堂一区二区三区| 国内自拍韩国资源在线| 欧美日韩三级国产在线| 99久久精品费精品国产风间由美|