在弹出窗口外处理点击事件

时间:2014-03-05 20:42:13

标签: java javascript gwt

你如何处理“弹出窗口”之外的点击事件,我实际上是使用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;
        }
    });
}

1 个答案:

答案 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;
        }
    }
});