第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

jQuery 嵌套 event 會(huì)觸發(fā)多次的原因?

jQuery 嵌套 event 會(huì)觸發(fā)多次的原因?

元芳怎么了 2019-04-08 11:18:58
Html代碼如下:jQuery代碼如下:$('#cover').mouseover(function(){$('#inside').click(function(){alert('multipletimes');});});$('#cover_js').mouseover(function(){document.getElementById('inside_js').onclick=function(){alert('justonetime');}});$('#outside').click(function(){alert('justonetime');});id為inside的按鈕的click事件被嵌套在div的鼠標(biāo)事件內(nèi),而id為outside的按鈕則未嵌套,分別對(duì)兩個(gè)按鈕進(jìn)行多次點(diǎn)擊后,inside按鈕綁定的click事件會(huì)進(jìn)行累加,而outside按鈕則仍舊只綁定一個(gè)click事件。id為inside_js的按鈕的click事件也被嵌套在div的鼠標(biāo)事件內(nèi),但是我用javascript實(shí)現(xiàn)click,此時(shí)點(diǎn)擊多次后,只觸發(fā)一個(gè)alert。解決上述問題可以用unbind對(duì)嵌套event進(jìn)行解綁:$('#cover').mouseover(function(){$('#inside').unbind('click').click(function(){alert('multipletimes');});});但是我想知道為什么Jquery嵌套event會(huì)對(duì)事件進(jìn)行累加,從而導(dǎo)致觸發(fā)多次呢?
查看完整描述

2 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

謝邀,俺正忙著寫Vim的哲學(xué)呢,呵呵~簡(jiǎn)單說(shuō)說(shuō):
所有的事件綁定(.click,.mouseover,.hover等等)都是委托給更底層的.on方法的,通過(guò)查看其源碼得知.on最終會(huì)調(diào)用$.event.add方法
我沒有細(xì)細(xì)去看$.event對(duì)象的全部?jī)?nèi)容,只是看到這一行的時(shí)候,我似乎有些明悟了。
jQuery為每一個(gè)事件回調(diào)函數(shù)生成一個(gè)guid,保證它們都是獨(dú)一無(wú)二的(即使函數(shù)內(nèi)容相同)
如果你繼續(xù)往后看,會(huì)發(fā)現(xiàn)這些回調(diào)函數(shù)都被push到一個(gè)數(shù)組里保存,所以當(dāng)時(shí)間觸發(fā)的時(shí)候,它們也應(yīng)該是一個(gè)個(gè)從數(shù)組里取出來(lái)再執(zhí)行(或許是為了保證注冊(cè)在同一事件下不同回調(diào)函數(shù)的執(zhí)行順序,但是像你這樣內(nèi)容一樣的回調(diào)函數(shù)就不好判斷了,所以如果你不得不多次綁定內(nèi)容一樣的回調(diào),先解綁)。這就是為什么會(huì)產(chǎn)生你問題中效果的原因。
至于jQuery為什么要這樣去設(shè)計(jì)我還沒有去求證,我猜是為了更強(qiáng)大的事件管理能力,至于bindafterunbind這樣的副作用也許在jQueryTeam看來(lái)是微不足道的犧牲吧。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-08
  • 2 回答
  • 0 關(guān)注
  • 365 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)