我需要将ClickHandlers添加到许多复选框(> 4000),并且它正在执行40秒。 如何为html类中的所有元素添加处理程序?
现在:
ChckBoxHandler cbh = new ChckBoxHandler();
SimpleCheckBox.wrap(DOM.getElementById("chbid" + ID)).addClickHandler(cbh);
我想:
DOM.getElementsByClass("chkboxes").addClickHandler(cbh);
答案 0 :(得分:1)
我会采取一个简单的解决方案:
为什么不向父窗口小部件(html面板?或您正在使用的任何面板)添加点击处理程序并检查点击次数。
每当点击完成后,您就可以遍历您的复选框,看看哪一个具有检查状态。
答案 1 :(得分:0)
如果您的页面中有很多元素(在您的情况下为4000),那么为每个元素分配一个事件并不是一个好主意。这会伤害表现。相反,你可以使用事件委托,它包括(在点击的情况下)将事件分配给父元素并检查点击了哪个子元素并为其运行代码
以下是jsfiddle.net创建者David Walsh如何运作的非常好的教程。
How JavaScript Event Delegation Works
如果您使用jQuery,有一种非常简单的方法可以为您处理。