2

我已经阅读了很多其他问题,涉及如何在单击外部 div 时关闭它,但我有一个复杂的问题,因为我有其他与 .live() 绑定的元素

我想要发生的是,如果我点击页面上的其他任何地方,div 应该消失,包括如果我点击“活动”元素。当我单击该实时元素时,我希望它的处理程序正常进行。

据我所知,处理关闭 div 的基本方法是将单击侦听器附加到或 $document,但这会阻止任何其他实时事件冒泡通过上述 body/doc 处理程序。有没有解决的办法?

4

1 回答 1

1

在现场,事件按照从最前面到最后面的顺序在阶梯上冒泡。在您的“活动”元素的单击(这是您的 body 对象的直接/间接子对象)中,如果您不返回 false 或停止传播,它将冒泡到达文档的单击处理程序。通过实时附加文档的点击似乎不起作用。

在此处检查示例实现:http: //jsfiddle.net/VHtSP/6/

$('div.menu').live('click', function(e) {
    e.stopPropagation();
    alert('click inside menu. will not propagate.');
    return false;
});

$(document).click(function() {
    alert('document click() handler.');
    // close the div
    $('div.menu').hide();
});

$('a').live('click', function() {
    alert('<a> click() handler');
    // .. your code to handle the live element's click
});
于 2011-12-18T10:09:23.583 回答