2012-03-08 57 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