2010-03-19 38 views
0

我有我的網頁上有多個menues ...JQUERY clickout側面件

<div class="menu"> 
    <div>Menu header</div> 
    <div>Menu content</div>// should hide on click outside .menu 
</div> 

<div class="menu"> 
    <div>Menu header</div> 
    <div>Menu content</div>// should hide on click outside .menu 
</div> 

基本上我需要所有的菜單(或多個),除非有人點擊任何它應該在menues的檢測到點擊時隱藏除了他們點擊的菜單外,隱藏任何其他菜單。

我已經看到了一些工作,但只有當你在頁面上有一個菜單使用stopPropagation不完全有用,因爲它可能會取消任何其他必要的指令;

任何想法將appriciated。

回答

3

嘗試:

$(document).click(function(evt) { 
    var menu = $(evt.target).closest("div.menu"); 
    other = $("div.menu").not(menu).children(":last-child").hide(); 
    menu.children(":last-child").show(); 
}); 

基本上這個監聽所有click()事件。它確定它是否發生在菜單項內。如果它顯示內容並隱藏其他內容。否則,它隱藏所有的菜單內容。

+0

它隱藏了所有菜單,包括不應該隱藏它的「菜單標題」應該隱藏它的內容。 – Val 2010-03-19 01:39:17

+0

你是一個拯救生命的人...一直在尋找這5個好日子的2個月大聲笑:) – Val 2010-03-19 01:48:59