Использование событий GWT-кликов
Из-за соображений производительности у меня есть изготовленный на заказ стол. Таблица состоит из столбцов, которые создаются как HTML DIVs, а строка заключена в AbsolutePanel. Положение столбца (столбцов) и строки (строк) является абсолютным и рассчитывается в цикле рендеринга. Таблица добавляется в ScrollPanel и отображает только видимую часть строк, а также добавляет строки при прокрутке пользователя.
Требование клиента - открыть PopupPanel, чтобы показать подробности о строке при щелчке по строке. Я добавил ClickHandler на панель строк, поместив в нее событие click, что прекрасно работает.
Проблема в том, что, если я добавлю, например, стандартную ссылку или какой-либо кликабельный элемент в одну из ячеек таблицы, щелчок по указанному элементу (ам) приведет также к срабатыванию обработчика щелчка строки, который я хочу как-то предотвратить. Источником события является строка Элемент, а не ссылка / значок / все, что было нажато.
Любая помощь в решении этого (возможно, совершенно другой подход?) Высоко ценится.
1 ответ
Я бы использовал gwtquery из-за его простоты и производительности.
Я не знаю окончательный dom, отрендеренный вашим приложением, но если мы предположим, что у вас есть что-то вроде этого
<div id="column1">
<div id="row1_1" class="my_row" product_id="whatever"> content </div>
...
</div>
Ваш код может быть примерно таким:
import static com.google.gwt.query.client.GQuery.*;
$(".my_row").click(new Function(){
public void f() {
// The gquery instance of the row clicked
GQuery thisRow = $(this);
// Use gquery methods to get some info of your row
String thisId = thisRow.id();
String productId = thisRow.attr("product_id");
Element thisElement = thisRow.get(0);
// do Something with your row
...
}
});