【发布时间】:2011-09-10 22:28:46
【问题描述】:
我想在窗口或文档级别监听 <p> 元素上的事件,因为此类元素太多,无法为每个元素附加 onclick 事件处理程序。
这就是我所拥有的:
window.onload=function()
{
window.addEventListener('click',onClick,false);
}
function onClick(event)
{
alert(event.target.nodeName.toString());
}
我需要关于上面代码的建议,它好吗?
而且,除了检查nodeName之外,我如何检查点击的元素是否是<p>元素?
例如,如果 <p> 元素包含 <b> 元素并且被单击,则 nodeType 将是 b 而不是 p。
谢谢。
【问题讨论】:
-
不使用任何库有什么特别的原因吗?像 jQuery 或 YUI 委托这样的框架让你使用起来很简单。只是好奇。
-
嘿。这将在其中运行的环境不允许加载外部脚本。唯一的方法是将 jQuery 代码直接粘贴到 HTML 文件中,但这似乎有点过头了。
-
@Francisc:不要忘记在
Event-object 上没有'target'-property 的旧版IE(至少是IE 7)。使用var target = 'target' in event ? event.target : event.srcElement;srcElement 之类的东西。他们也缺少addEventListener-方法 - 改用attachEvent。 -
谢谢萨克斯。这只会被 Webkit 浏览器看到。这适用于他们吗?据我所知,只有 IE 有这个问题。
-
@Francisc:这只是一个 IE 问题。所有 Webkit 浏览器都支持 'element.addEventListener' 和 'event.target'。
标签: javascript event-delegation