我点击红色矩形按钮显示窗口。现在,如果想关闭窗口,我只需点击灰色栏的其他部分。我想要做的是修改代码,第二次单击红色矩形按钮关闭窗口,但它不起作用。
我已经放了html和相关文件here。
主要的html是chat.html
,其中主要的javascript位于
assets\plugins\emojiarea\jquery.emojiarea.js
以下是代码的一部分:
EmojiMenu.prototype.hide = function(callback) {
if (this.emojiarea) {
this.emojiarea.menu = null;
this.emojiarea.$button.removeClass('on');
this.emojiarea = null;
}
this.visible = false;
this.$menu.hide();
};
EmojiMenu.prototype.show = function(emojiarea) {
if (this.emojiarea && this.emojiarea === emojiarea) return;
this.emojiarea = emojiarea;
this.emojiarea.menu = this;
this.reposition();
this.$menu.show();
this.visible = true;
};
我尝试使用this.visible
来检测窗口是否已打开,如果是,则关闭它,但它无效。当我第二次点击红色矩形按钮时,是否有可能关闭窗户?
答案 0 :(得分:0)
所以我浏览了插件。这段代码:
$body.on('mouseup', function() {
self.hide();
});
为什么你不能使用它来检查它是否已经打开,因为每次你点击按钮时,这个鼠标都会被有效地隐藏,然后显示弹出窗口。
在此之后:
$button.on('click', function(e) {
EmojiMenu.show(self);
e.stopPropagation();
});
添加此:
$button.on('mouseup', function(e) {
e.stopPropagation();
});
这将防止鼠标事件从按钮本身冒泡。
现在您可以使用" this.visible来检测窗口是否已打开,如果是,则关闭它。"