2011-08-31 112 views
2

我已经读了很多涉及如何关闭一个div当你点击它外面的其他问题的传播,但我有我的复合问题有与.live()使用jQuery隐藏DIV当点击外面,而是让事件

束缚我希望发生的是,如果我点击其他地方的页面上的DIV应该会消失,包括如果我点击一个“活”元素的其他元素。当我点击那个活动元素时,我希望它的处理程序正常进行。

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

+0

这个网站给了如何生活()的作品一个方便的解释:http://www.bennadel.com/blog/1751-jQuery-Live-Method-And -event-Bubbling.htm – Steve

+0

也许这可以帮助:http://api.jquery.com/event.target/ – yoda

+1

我实在不明白你的问题,因为你只需要不返回false /从方法调用stopPropagation关闭div。 – Alxandr

回答

1

在现场,事件冒泡从梯子上最前到后最的顺序。在你的“活”元素的点击(这是你的身体对象的直接/间接子),如果不返回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 
});