第二次点击无法隐藏窗户

时间:2016-11-24 09:41:46

标签: javascript html

我点击红色矩形按钮显示窗口。现在,如果想关闭窗口,我只需点击灰色栏的其他部分。我想要做的是修改代码,第二次单击红色矩形按钮关闭窗口,但它不起作用。

enter image description here

我已经放了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来检测窗口是否已打开,如果是,则关闭它,但它无效。当我第二次点击红色矩形按钮时,是否有可能关闭窗户?

1 个答案:

答案 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来检测窗口是否已打开,如果是,则关闭它。"