来自 Sencha GXT Grid 的 MouseOutEvent?
MouseOutEvent from Sencha GXT Grid?
需要在鼠标离开网格时捕获 MouseOutEvent
。试过这个:
grid.addHandler(new MouseOutHandler() {
@Override
public void onMouseOut(MouseOutEvent event) {
...
}
}, MouseOutEvent.getType());
但它会在网格中的每个单元格上触发。有帮助吗?
首先,改用addDomHandler
。
grid.addDomHandler(new MouseOutHandler() {
@Override
public void onMouseOut(MouseOutEvent event) {
...
}
}, MouseOutEvent.getType());
不同之处在于 addHandler 不会将事件连接到 dom,但 addDomHandler
会。这个 似乎 并不总是需要的,因为一旦事件被连接起来,就不需要再次完成,但作为一个好习惯,每次你添加一个 dom 事件处理程序对于小部件,您应该始终使用addDomHandler
(或直接调用sinkEvents
等)。
好吧,真正问的问题是太多的事件正在发生,而不仅仅是一般的 'did the mouse leave the grid' 事件。
要处理这个问题,请检查事件的 eventTarget
是否是网格自己的元素。您会收到很多事件,因为您收到了网格内每个元素的所有 mouseout
事件,但只需要将其过滤到您感兴趣的特定事件即可。
这看起来像这样:
grid.addDomHandler(new MouseOutHandler() {
@Override
public void onMouseOut(MouseOutEvent event) {
//check event target of the event
Element target = (Element) event.getNativeEvent().getEventTarget();
if (grid.getElement().equals(target) {
// the mouse has left the entire grid
// ...
}
}
}, MouseOutEvent.getType());
解决方案来自 jQuery 通过 JSNI:
private native void addMouseLeaveHandler(Element element) /*-{
$wnd.$(element).mouseleave(function(){
....
});
}-*/;
需要在鼠标离开网格时捕获 MouseOutEvent
。试过这个:
grid.addHandler(new MouseOutHandler() {
@Override
public void onMouseOut(MouseOutEvent event) {
...
}
}, MouseOutEvent.getType());
但它会在网格中的每个单元格上触发。有帮助吗?
首先,改用addDomHandler
。
grid.addDomHandler(new MouseOutHandler() {
@Override
public void onMouseOut(MouseOutEvent event) {
...
}
}, MouseOutEvent.getType());
不同之处在于 addHandler 不会将事件连接到 dom,但 addDomHandler
会。这个 似乎 并不总是需要的,因为一旦事件被连接起来,就不需要再次完成,但作为一个好习惯,每次你添加一个 dom 事件处理程序对于小部件,您应该始终使用addDomHandler
(或直接调用sinkEvents
等)。
好吧,真正问的问题是太多的事件正在发生,而不仅仅是一般的 'did the mouse leave the grid' 事件。
要处理这个问题,请检查事件的 eventTarget
是否是网格自己的元素。您会收到很多事件,因为您收到了网格内每个元素的所有 mouseout
事件,但只需要将其过滤到您感兴趣的特定事件即可。
这看起来像这样:
grid.addDomHandler(new MouseOutHandler() {
@Override
public void onMouseOut(MouseOutEvent event) {
//check event target of the event
Element target = (Element) event.getNativeEvent().getEventTarget();
if (grid.getElement().equals(target) {
// the mouse has left the entire grid
// ...
}
}
}, MouseOutEvent.getType());
解决方案来自 jQuery 通过 JSNI:
private native void addMouseLeaveHandler(Element element) /*-{
$wnd.$(element).mouseleave(function(){
....
});
}-*/;