我有这个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'确保点击不在这两个元素上。
答案 0 :(得分:1)
您正在检查引用,显然两者在您的情况下都不一样,
hideForm: function(e) {
if (!($(e.currentTarget).is(this.groupInput) || $(e.currentTarget).is(this.container))) {
$(this.container).hide();
}
}
尝试在此背景下使用.is(selector)
。