0

我需要将 ClickHandlers 添加到许多复选框(> 4000),它会持续 40 秒。如何将处理程序添加到 html 类中的所有元素?

现在:

 ChckBoxHandler cbh = new ChckBoxHandler();
SimpleCheckBox.wrap(DOM.getElementById("chbid" + ID)).addClickHandler(cbh);

我想要:

DOM.getElementsByClass("chkboxes").addClickHandler(cbh);
4

2 回答 2

1

我会采取一个简单的解决方案:

为什么不向父小部件(html 面板?或您正在使用的任何面板)添加点击处理程序并检查点击。

每当单击完成时,您就可以遍历您的复选框并查看哪个复选框处于选中状态。

于 2012-11-21T21:52:12.357 回答
0

当您的页面中有很多元素(在您的情况下为 4000 个)时,为每个元素分配一个事件并不是一个好主意。它会损害性能。相反,您可以使用事件委托,其中包括(在单击的情况下)将事件分配给父元素并检查单击了哪个子元素并为其运行代码

这是 jsfiddle.net 的创建者 David Walsh 的一个很好的教程。

JavaScript 事件委托的工作原理

如果您要使用 jQuery,那么有一个非常简单的方法可以为您解决这个问题。

jQuery .live()

于 2012-11-21T19:40:05.763 回答