2012-03-08 68 views
7

我基本上試圖做一個簡單的下拉菜單與HTML,CSS和jQuery 和即時通訊關閉div當用戶點擊離開它的麻煩。當離開它時隱藏DIV

我試過stopPropagation並將一個動作綁定到單擊文檔時,它們要麼不工作要麼我不知道如何使用它們。反正看看下面的代碼

HTML

<div id="optionsMenu"> 
    <a href="account.php?edit=info">Account Settings</a>  
</div> 

JQuery的

$('.options').click(function(){ 
    if($('#optionsMenu').css("display") == 'none'){ 
     $('#optionsMenu').slideDown("fast"); 
    } 

    else{ 
     $('#optionsMenu').slideUp("fast"); 
    } 
}); 

$('#optionsMenu').blur(function(){ 
    $('#optionsMenu').css("display","none"); 
}); 

任何幫助將大大appriciated。

回答

9

你應該使用stopPropagation:

$(body).click(function(e) 
{ 
    $('#optionsMenu').slideUp('fast'); 
}); 
$('#optionsMenu').click(function(e) 
{ 
    e.stopPropagation(); 
}); 
+0

我喜歡你的答案,因爲它很簡單,易於理解 – 2012-03-08 23:09:41

3

你可以使用on(),也許是:

$('body').on('click', function(e){ 
    if ($(e.target).not('#optionsMenu')){ 
     $('#optionsMenu').slideUp('fast'); 
    } 
}); 

以上尚未測試,但應該,我覺得工作。

+0

感謝您的答覆,但這只是使菜單向下滑動,然後再向上滑動,所以它不是什麼即時尋找。 – 2012-03-08 22:34:39

+1

是的,您仍然在使用'e.stopPropagation();'在事件處理程序中顯示'#optionsMenu'。看演示。 – 2012-03-08 22:39:25

+0

謝謝,我現在明白了,那種工作。 – 2012-03-08 23:06:28