2

这是小提琴。

代码包括:

$('.icon').click(function () {
    $('.foo').toggle();
});
$(document).mouseup(function (e) {
    var container = $('.foo');

    if (!container.is(e.target) // if the target of the click isn't the container...
    &&
    container.has(e.target).length === 0) // ... nor a descendant of the container
    {
        container.hide();
    }
});

我可以使用链接打开它,当点击它外部时,代码会关闭它,但我无法使用最初打开它的链接关闭它。

4

2 回答 2

4

你隐藏并再次显示它。只需发表评论container.hide();并尝试点击.icon

要克服这个问题,只需检查.icon全局mouseup事件处理程序中的容器。http://jsfiddle.net/55DSp/

于 2013-07-27T17:46:46.983 回答
1

您在 if 语句中缺少检查以查看是否.icon是目标。

http://jsfiddle.net/gT5BT/100/

var foo = $('.foo'), icon = $('.icon');

icon.click(function () {
    foo.toggle();
});

$(document).mouseup(function (e) {
    if (!foo.is(e.target) && !icon.is(e.target) && !foo.has(e.target).length)
        foo.hide();
});
于 2013-07-27T17:55:38.360 回答