消耗GWT点击事件

时间:2013-06-03 13:47:03

标签: events gwt gwt-2.5

由于性能原因,我有一个定制表。该表由作为HTML DIV创建的列组成,并且该行包装在AbsolutePanel中。列和行的位置是绝对的,并在渲染循环上计算。该表被添加到ScrollPanel中,仅呈现行的可见部分,并在用户滚动时添加行。

客户要求是打开PopupPanel以在单击行时显示有关行的详细信息。我通过将click事件下沉到行面板中添加了一个ClickHandler,这很好用。

问题是,如果我添加例如将标准链接或任何可点击的项目放入表格中的一个单元格中,单击所述项目还会导致行单击处理程序触发,我想以某种方式阻止它。事件的来源是行元素,而不是链接/图标/点击的任何内容。

非常感谢任何解决这个问题的帮助(也许是一种完全不同的方法?)。

1 个答案:

答案 0 :(得分:0)

我会使用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 
    ...

  }
});