通过单击body来隐藏元素,除非特定元素

时间:2016-03-23 18:40:10

标签: javascript jquery object click bind

我有这个javascript对象:

StoryGroup = {
    groupInput: '.story-group-container input[type="text"]',
    container: '.checkbox-container',
    submit: '.checkbox-container .filter',
    body: 'body',
    init: function() {
        $(this.groupInput).click(this.showForm.bind(this));
        $(this.body).click(this.hideForm.bind(this));
    },
    showForm: function() {
        $(this.container).show();
    },
    hideForm: function(e) {
        if (e.currentTarget == $(this.groupInput) || e.currentTarget == $(this.container)) {
            $(this.container).show();
        } else {
            $(this.container).hide();
        }
    }
}

为什么这不正常?如果我删除了隐藏形式'功能。 showForm功能正常工作并显示我的容器'单击groupInput时。我想在单击身体上的任何位置时运行hideForm函数,除非单击位于输入或容器上。这就是为什么我通过' e'确保点击不在这两个元素上。

1 个答案:

答案 0 :(得分:1)

您正在检查引用,显然两者在您的情况下都不一样,

hideForm: function(e) {
   if (!($(e.currentTarget).is(this.groupInput) || $(e.currentTarget).is(this.container))) {
      $(this.container).hide();
   }
}

尝试在此背景下使用.is(selector)