我想动态地在页面上的许多HTML元素上添加onclick事件。搜索和查找这些元素的最佳方法是什么,没有手头的ID,并且知道HTML元素没有任何共同点。
这样做的一种方法是向所有元素添加一个CSS类('add-onclick')并遍历文档,并为每个HTML标签'elem'执行以下检查:(elem.className.indexOf(' add-onclick')!= -1)
我能看到的唯一不足之处是,我使用的是CSS类,而不是样式。这完全是非法的,我还有其他选择吗?
我正在使用XHTML 1.0 Transitional,并且不能选择HTML5。
非常感谢 圣战
答案 0 :(得分:1)
您可以为类添加前缀,我的意思是click_redbg
或click_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
。