作者grence (多想两分钟 = =")
看板Ajax
标题Re: [问题] jquery attr onclick IE7 & 8
时间Sun Jan 30 03:36:38 2011
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
1F:→ TonyQ:live 只要给 context 也可以指定绑在哪. 01/30 04:44
2F:→ TonyQ:所以我很少用delegate 01/30 04:44
3F:→ grence:喔,对,感谢补充 01/30 21:50
4F:→ gaekeamql:请问 live 怎麽给 context 01/31 21:32
5F:→ TonyQ:jq("td","table").live这样可以把事件绑在table上。 02/01 07:34
6F:→ TonyQ:看 doc 有说明... 02/01 07:34