开发者

How do I obtain the GWT widget that wraps a given DOM element?

开发者 https://www.devze.com 2023-02-13 15:22 出处:网络
When a click event occurs, I want to determine which of my widgets was clicked. Note that, for performance reasons, I specifically don\'t want to add click handlers to each of my widgets.开发者_C百科

When a click event occurs, I want to determine which of my widgets was clicked. Note that, for performance reasons, I specifically don't want to add click handlers to each of my widgets.

开发者_C百科

It's easy enough to obtain the element that was clicked (it'll be the event target of the native event), but then how do I find the corresponding widget?


There is no standard functionality for it, afaik. But you can do it in a similar way as is done in GWT's com.google.gwt.user.client.ui.Tree class.

Basically it work there by first collecting the chain of Elements from the Element of your root Widget to the element of the Widget that clicked (see private method collectElementChain in Tree class). With this chain of Elements the Widget is found by traversing from the Root widget down to the Widget clicked (see private method findItemByChain in the Tree class).

This works for Tree because the Widget and Element index of the children of each Widget/Element match, and because it only allows a specific widget set as TreeItem's.


Actually you can get the widget associated with the main element of a widget using either gwtquery or the DOM.getEventListener(element) method which returns the widget associated with an element.

You can check out my response in another thread for some working code: GWT - How to retrive real clicked widget?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号