Re: [問題] 關於mouse event註冊的問題
※ 引述《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
09/30 21:17, 1F
→
09/30 22:46, , 2F
09/30 22:46, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 4 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章