我已经阅读了很多其他问题,涉及如何在单击外部 div 时关闭它,但我有一个复杂的问题,因为我有其他与 .live() 绑定的元素
我想要发生的是,如果我点击页面上的其他任何地方,div 应该消失,包括如果我点击“活动”元素。当我单击该实时元素时,我希望它的处理程序正常进行。
据我所知,处理关闭 div 的基本方法是将单击侦听器附加到或 $document,但这会阻止任何其他实时事件冒泡通过上述 body/doc 处理程序。有没有解决的办法?
我已经阅读了很多其他问题,涉及如何在单击外部 div 时关闭它,但我有一个复杂的问题,因为我有其他与 .live() 绑定的元素
我想要发生的是,如果我点击页面上的其他任何地方,div 应该消失,包括如果我点击“活动”元素。当我单击该实时元素时,我希望它的处理程序正常进行。
据我所知,处理关闭 div 的基本方法是将单击侦听器附加到或 $document,但这会阻止任何其他实时事件冒泡通过上述 body/doc 处理程序。有没有解决的办法?
在现场,事件按照从最前面到最后面的顺序在阶梯上冒泡。在您的“活动”元素的单击(这是您的 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
});