Re: [問題] .html()之後 的事件

看板Ajax作者 (沉默是金)時間16年前 (2009/08/29 07:53), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《sowhysowhat (sowhysowhat)》之銘言: : $("#a > img").click(){ : $("#a").html("<img src='xxxxx' id='b'>"); : } 如果我沒猜錯這應該是 jQuery的寫法 (建議下次討論標註) 而且其實這兩個地方的寫法好像都不太對吧? 還是 jQuery 有改過event binding的宣告式@_@ 我認知中的寫法應該要是 $("#a > img").click(function(){ $("#a").html("<img src='xxxxx' id='b'>"); }); : $("#b").click(){ : alert("it works~!!"); : } : 為什麼像上述這樣用.html()或.append()上去的東西 : 沒辦法對他們去偵測事件呢? : 而這樣卻可以?不太明白阿=''= : $("#a > img").click(){ : $("#a").html("<img src=xxxxx id='b'>"); : $("#b").click(){ : alert("it works~!!"); : } : } 先不論語法問題 , 還有一個要注意的地方. 那就是時間點的問題 , 因為在你的 #b 根據事件描述是在 #a 被點擊之後才動態產生的 , 也就是很有可能在你宣告 #a 的click 時仍尚未出現 , 你緊接著在#a 之後宣告 #b的click事件 , 那時候的 $("#b") 很有可能是空集合 , 也就是找不到任何 id=b的元素. js操作上很講究時間點 , 而另一種寫法因為是寫在#a的clict中 , 則能確保 , 是在 #b被建立出來之後才對 #b進行綁定. 當然你可以透過 1.3新增的 live 來針對某些條件的元素 , 做一致性的偵測綁訂 , 不過這樣多少會增加額外的cost , 建議從流程設計的角度方面去思考為佳. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 116.59.168.233

08/29 07:54, , 1F
嘖嘖 剛剛看到推文才發現已經都有人講過了...XDDD
08/29 07:54, 1F

09/03 12:28, , 2F
嗯 但對我這個新手來說 還是獲益良多XD
09/03 12:28, 2F
文章代碼(AID): #1Ac6u3fp (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1Ac6u3fp (Ajax)