0

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

客户要求是打开一个 PopupPanel 以在单击该行时显示有关该行的详细信息。我通过将点击事件沉入其中,将 ClickHandler 添加到行面板中,效果很好。

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

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

4

1 回答 1

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 
    ...

  }
});
于 2013-06-03T17:02:45.487 回答