0

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

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

我能看到的唯一缺点是,我将 CSS 类用于样式以外的其他内容。这完全违法吗?我还有什么其他选择?

我正在使用 XHTML 1.0 过渡,没有 HTML5 不是一个选项。

非常感谢圣战

4

3 回答 3

1

您可以为类添加前缀,我的意思是click_redbgorclick_bluebg并使用带有 jQ​​uery 或 Prototype 的正则表达式:

$("div[class^='click_']").each(function(e) { ... });
于 2012-10-24T10:17:23.003 回答
0

好吧,那里有许多具有“委托”功能的 Javascript 框架,大多数不需要 html5 功能(因为它的正常 ECMA 脚本)。

委托基本上是在更高级别捕获 DOM 事件,然后引发事件(DOM 事件在 dom 中冒泡,直到它们到达最底部的元素,然后再次向上并通知每个事件处理程序他们在路由中传递的元素)

如果你想在不使用框架的情况下实现这些,你可以在文档正文中添加一个点击事件(例如)。此事件会在您的页面上获得所有点击,因为“最底部元素”存储在事件的数据中,您可以为该元素设置 css 规则并委托给您的委托实现。

于 2012-10-24T10:15:37.440 回答
0

最好的方法取决于上下文和标准。

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

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

于 2012-10-24T11:34:20.150 回答