你如何处理“弹出窗口”之外的点击事件,我实际上是使用LinkedIn Hopscotch包装器来实现GWT。这个想法是当用户在弹出窗口外点击时(即在.hopscotch-bubble-container
之外),弹出窗口应该隐藏。调用GwtTour.endTour(false);
最终会导致弹出窗口隐藏。这很好,但是,我还需要在点击“dashboardLink”菜单项时制作;这个$(“html”)。bind(“click”,...)也不应该被调用。它被称为,不知道为什么。
代码:
private void bindHandlers(){
// Handle when click event came from here
$(".hopscotch-bubble-container").bind("click", new com.google.gwt.query.client.Function() {
@Override
public boolean f(com.google.gwt.user.client.Event e) {
e.stopPropagation();
return false;
}
});
$("#dashboardLink").bind("click", new com.google.gwt.query.client.Function() {
@Override
public boolean f(com.google.gwt.user.client.Event e) {
e.stopPropagation();
return false;
}
});
// This event handler closes the GWT Tour
// when user click outside of it
$("html").bind("click", new com.google.gwt.query.client.Function() {
@Override
public boolean f(com.google.gwt.user.client.Event e) {
GwtTour.endTour(false);
return true;
}
});
}
答案 0 :(得分:1)
检查点击事件的来源,如果它是从预期来源触发,然后做任何需要的事情。
如果菜单项是此点击事件的来源,则不执行任何操作。
看看:
$("html").bind("click", new com.google.gwt.query.client.Function() {
@Override
public boolean f(com.google.gwt.user.client.Event e) {
// you can check it using instanceof operator, object references or Element ID
// e.getSource() instanceof MenuItem
// ((Widget) e.getSource()).getElement().getId()
if (e.getSource() != dashboardLink) {
GwtTour.endTour(false);
return true;
} else {
return false;
}
}
});