Re: [問題] 關於mouse event註冊的問題

看板Ajax作者 (銀色)時間17年前 (2007/09/30 21:11), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串2/4 (看更多)
※ 引述《waloddyca (屋拉拉)》之銘言: [蘇姍] 因為你使用的是 .innerHTML 來進行疊加。(笑) 當你使用 parent_div.innerHTML += div_set[i] 時, 實際上是只有將內部 Html 碼重新疊加回去,而其中並不包含 onclick 的註冊。 所以會不斷的遺失被註冊的 onclick 舉例來說: 第一次: parent_div.innerHTML = "" div_set[0] = "<div>A</div>" parent_div.innerHTML += div_set[0] => parent_div.innerHTML = "<div>A</div>" 然後藉由 sub_div_tags[target_tags].onclick = click_event 註冊此 <div>A</div> 第二次: parent_div.innerHTML = "<div>A</div>" div_set[1] = "<div>B</div>" parent_div.innerHTML += div_set[1] => parent_div.innerHTML = "<div>A</div><div>B</div>" 要注意,這邊的 parent_div.innerHTML += div_set[1] 展開來其實是 parent_div.innerHTML = "<div>A</div>" + "<div>B</div>" 而這裡被重新指定進來的 html "<div>A</div>" 實際上只剩下了 html 碼, 註冊進去的 onclick 事件並不會隨著 html code 被指定進去。 因此便造成了 onclick 註冊事件的流失。 如果要避免此情形,建議以 dom 來操作 node 的增減會比較好, 如此可以完整留住註冊過的 onclick 事件。 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.130.248

09/30 21:17, , 1F
也是 , 平常根本不會用 innerHTML操作這種事情 , 都忘了 XD
09/30 21:17, 1F

09/30 22:46, , 2F
XD
09/30 22:46, 2F
文章代碼(AID): #16_w1n-V (Ajax)
文章代碼(AID): #16_w1n-V (Ajax)