2012-11-21 111 views
0

我需要將ClickHandlers添加到許多複選框(> 4000),並且它的效果持續40秒。 如何添加處理程序到HTML類中的所有元素?將ClickHandler添加到html類

現在:

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

我想:

DOM.getElementsByClass("chkboxes").addClickHandler(cbh); 
+0

4000複選框在一個頁面? – Ibu

+0

是的,它的數據分析 –

+0

我認爲事件代表團將是一個更好的解決方案,這樣你可以只附加一個事件處理程序父母 – Ibu

回答

1

我會採取一個簡單的解決方案:

你爲什麼不添加一個單擊處理程序父窗口部件(html的面板或任何面板使用的是?),並檢查是否有點擊。

無論何時點擊完成,您都可以循環瀏覽您的複選框,並查看哪一個有檢查狀態。

+0

它是表格,我也有行的鏈接。如果我點擊鏈接 - 處理程序將激活?這對我很不利 –

+0

@ Ibu解決方案的GWT版本幾乎就像在這種情況下一樣,您必須過濾以查看實際點擊了哪些內容。 JQuery爲你做了一些過濾,這在GWT中很容易實現 - 獲取事件的目標,詢問它是什麼(「輸入」與「a」)或其「類」或「名稱」屬性是 - 以某種方式區分它。 –

0

當你在你的頁面(在你的案件4000)有很多的元素,這不是一個好主意,分配事件到他們每一個人。它會傷害到性能。相反,您可以使用事件代表團(包括點擊情況下)將事件分配給父元素,並檢查哪個子元素被點擊並運行代碼

這是一個非常好的教程它由jsfiddle.net的創建者David Walsh工作。

How JavaScript Event Delegation Works

如果你使用jQuery有一個很簡單的方法是需要照顧的,對於你。

jQuery .live()

+0

想留在gwt,但如果沒有其他解決方案 - 做到這一點,謝謝 –