我想知道如何使用“传统”JavaScript实现jQuery的.live功能。我想要像$('a')这样的东西.live('mouseover',mouseover_func)就像通常的JavaScript一样。但是如何?
答案 0 :(得分:10)
将“mouseover”事件处理程序绑定到<body>
元素。在该处理程序中,检查它捕获的每个事件的“target”属性,并查看其“tagName”属性是否为“A”。如果是这样,请调用处理程序。
“实时”功能利用事件“冒泡”,这是浏览器从目标元素到DOM根目录检查处理程序的名称,一次一个父项。由于文档中的每个<a>
最终都可以追溯到<body>
,因此该根节点将获得所有“鼠标悬停”事件,这些事件不会被取消冒泡的较低级别处理程序分流(通过事件对象上的“stopPropagation()”方法,或者我想的一些奇怪的浏览器特定方式。
然而,并非所有事件都会冒泡。我正在寻找一个很好的参考...好吧,MDC page seems pretty good虽然有点老了。
答案 1 :(得分:0)
只需阅读jQuery源代码即可了解它是如何实现的。这是开源的乐趣之一。你会学到很多东西......