看板 Ajax 關於我們 聯絡資訊
http://www.w3.org/TR/DOM-Level-2-Events/events.html void addEventListener(in DOMString type, in EventListener listener, in boolean useCapture); 第三個參數 useCapture,意思是…先來個圖比較好解釋 http://goo.gl/bamuu click 某個 button實際發生的事是, 以 html→body→button→body→html 這樣的順序去觸發 click事件 capturing bubbling 從父往子叫 capturing,從子往父叫 bubbling,所以需要第三個參數指定順序 簡單的範例:http://jsfiddle.net/ndKcr/1/ 點內層的 div看事件的觸發順序就知道差別了 == 然後,用ajax更新(append)的 dom元素不會觸發事件是因為…通常都會忘記重新綁事件。 jquery的解法:live就是把事件綁在 body上, 它強大的 selector會找到是誰該觸發什麼事件。 如果瞭解標準定義的事件模型, 就會覺得 live的事件都要跑到 body才觸發,在效能上會不會比較慢? 所以在 1.4之後多了 delegate可以讓你指定該綁在哪,而不是統一綁在 body上。 這樣的方式(live, delegate)也可解決直接把事件綁在 dom元素上, 移除 dom元素可能會造成某些 *破舊* 瀏覽器產生的 memory leak問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.194.10.63
TonyQ:live 只要給 context 也可以指定綁在哪. 01/30 04:44
TonyQ:所以我很少用delegate 01/30 04:44
grence:喔,對,感謝補充 01/30 21:50
gaekeamql:請問 live 怎麼給 context 01/31 21:32
TonyQ:jq("td","table").live這樣可以把事件綁在table上。 02/01 07:34
TonyQ:看 doc 有說明... 02/01 07:34