溫馨提示×

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

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

ajax請(qǐng)求返回的數(shù)據(jù)無(wú)法用選擇器綁定事件

發(fā)布時(shí)間:2020-08-06 15:29:31 來(lái)源:網(wǎng)絡(luò) 閱讀:511 作者:風(fēng)鈴渡LOVE 欄目:開(kāi)發(fā)技術(shù)

今天在寫(xiě)一個(gè)項(xiàng)目的時(shí)候突然發(fā)現(xiàn)一個(gè)很怪異的問(wèn)題,問(wèn)題是這樣的:

當(dāng)我使用ajax去后臺(tái)請(qǐng)求數(shù)據(jù)就將后臺(tái)拼接生成的html代碼直接添加到頁(yè)面中了,但是在后續(xù)操作中發(fā)現(xiàn),生成的html代碼綁定的click不起作用,但是換成onclick=“click()”的話就可以了。

出現(xiàn)的原因是:

因?yàn)橄群箜樞虻年P(guān)系啊~用AJAX加載是異步加載這個(gè)應(yīng)該很清楚吧~既然是異步加載那么就是非同步的,
也就是說(shuō)當(dāng)你的整個(gè)頁(yè)面加載完成后$('.div').click(function(){.....});
這句根本找不到你異步加載的DIV,所以它就不會(huì)執(zhí)行了,即使你之后再把<div class="div">div</div>
這個(gè)加載進(jìn)來(lái),在瀏覽器也不會(huì)找到這個(gè)DIV的,因?yàn)闉g覽器在第一次加載的時(shí)候沒(méi)有找到它,
并且瀏覽器在你加載進(jìn)這個(gè)DIV來(lái)之后也不會(huì)重新渲染一次,所以找不到。

而你加載進(jìn)來(lái)的<div onclick=dofun("prameter")>div</div>,是它去找的這個(gè)函數(shù),而dofun這個(gè)函數(shù)
是之前就被瀏覽器渲染過(guò)了,只是還沒(méi)有調(diào)用,而你新加載進(jìn)來(lái)的DIV正好要調(diào)用之前就已經(jīng)渲染好的
函數(shù),所以就可以使用了~

更多的解釋?zhuān)?br />

因?yàn)?('.div').click(function(){.....}); 是在 ajax加載出來(lái)之后才執(zhí)行的;而且,如果沒(méi)找到對(duì)象,調(diào)試時(shí)應(yīng)該報(bào)錯(cuò)才對(duì),但是又沒(méi)報(bào)錯(cuò)。這是因?yàn)槟阌胊jax加載的是<div class="div">div</div>這個(gè)!但是瀏覽器在第一次加載渲染的時(shí)候沒(méi)有找到<div class="div">div</div>這個(gè),所以你的那個(gè)$('.div').click(function(){.....});在瀏覽器第一次加載的時(shí)候是不會(huì)找到 class="div"的這個(gè)層的,所以就當(dāng)沒(méi)找到對(duì)象跳過(guò)去了,但是語(yǔ)法上又沒(méi)有錯(cuò)誤,所以它不會(huì)報(bào)錯(cuò),至于你說(shuō)的沒(méi)找到對(duì)象也沒(méi)有報(bào)錯(cuò)那是因?yàn)?('.div').click(function(){.....});這句根本就沒(méi)有執(zhí)行,所以不存在查找對(duì)象的問(wèn)題,自然就不報(bào)錯(cuò)了~JS瀏覽器只加載一次,并且注冊(cè)一些對(duì)應(yīng)的事件,當(dāng)?shù)谝淮巫?cè)找不到對(duì)應(yīng)的元素時(shí)就會(huì)被瀏覽器忽略,之后及時(shí)你再加載元素進(jìn)來(lái)也不會(huì)再重新加載一次JS了,除非你刷新。所以你的$('.div').click(function(){.....}); 這句算是JS,所以瀏覽器只加載一次。所以不管用了






向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