2011-08-31 80 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 
});