检测特定的HTML元素以在其上添加onclick事件

时间:2012-10-24 09:58:25

标签: javascript html onclick

我想动态地在页面上的许多HTML元素上添加onclick事件。搜索和查找这些元素的最佳方法是什么,没有手头的ID,并且知道HTML元素没有任何共同点。

这样做的一种方法是向所有元素添加一个CSS类('add-onclick')并遍历文档,并为每个HTML标签'elem'执行以下检查:(elem.className.indexOf(' add-onclick')!= -1)

我能看到的唯一不足之处是,我使用的是CSS类,而不是样式。这完全是非法的,我还有其他选择吗?

我正在使用XHTML 1.0 Transitional,并且不能选择HTML5。

非常感谢 圣战

3 个答案:

答案 0 :(得分:1)

您可以为类添加前缀,我的意思是click_redbgclick_bluebg,并使用jQuery或Prototype的正则表达式:

$("div[class^='click_']").each(function(e) { ... });

答案 1 :(得分:0)

那里有许多Javascript框架,其中包含“委托”,大多数不需要html5功能(因为它的普通ECMA脚本)。

代表团基本上在更高级别捕获DOM事件然后抛出事件(DOM事件在dom中向下冒泡,直到它们触及最底层元素,然后再次向上并通知每个事件处理程序它们在路线)

如果要在不使用框架的情况下实现它们,可以将click事件添加到文档正文(例如)。此事件会获取页面上的所有点击,因为“最底层元素”存储在事件的数据中,您可以为该元素设置css规则并委派给您的委托实现。

答案 2 :(得分:0)

最好的方法取决于背景和标准。

为此目的使用类没有任何问题。类是标记语言概念,没有“CSS类” - 只是在CSS中使用类选择器 - 并且不要求类仅用于样式。

当然可以遍历文档树并检查每个元素的类。但是,这可能是jQuery适合的。如果类中的所有元素都应该具有相同的事件处理函数$('.add-onclick').click(handleClick),那么使用jQuerym只需要语句handleClick