使用jQuery创建一个简单的菜单?

使用jQuery创建一个简单的菜单?,jquery,menu,Jquery,Menu,我希望使用jQuery创建如下菜单: 单击一个按钮,显示包含菜单选项的div。 如果出现其他情况,则单击菜单,而“打开”则隐藏菜单。 我可以很容易地完成第一部分,但第二部分是我遇到的问题。 我正在使用以下代码: $("html").click(function(){ menu.hide(); }); 但是,我一单击按钮,菜单就会关闭。我不太确定您的问题,但您可以尝试以下方法: $('body').not('menuelement').click(function() { men

我希望使用jQuery创建如下菜单:

单击一个按钮,显示包含菜单选项的div。 如果出现其他情况,则单击菜单,而“打开”则隐藏菜单。 我可以很容易地完成第一部分,但第二部分是我遇到的问题。 我正在使用以下代码:

$("html").click(function(){
    menu.hide();
});

但是,我一单击按钮,菜单就会关闭。

我不太确定您的问题,但您可以尝试以下方法:

$('body').not('menuelement').click(function() {
    menu.hide();
});

像这样的方法应该会奏效:

$("html").click(function(e){
    if(!$(e.target).is('#menu_options_div') && $(e.target).parents("#menu_options_div").length == 0)
        menu.hide();
});

e、 目标-原始单击的元素。只需测试它是否不是带有选项/菜单的div,以及它的父对象是否不是options/menu div

多亏了这个技巧,但是我没有使用$e.target.parentsmenu\u options\u div.length==0,因为我看不出需要它。一旦在menu div中有一些元素,target将指向该元素iside menu options\u div,这就是为什么我还要测试单击的div是否不是menu\u options\u div的子菜单。如果它里面有东西,并且不想在单击某个子菜单时关闭菜单,那么这是必需的。这无法工作。选择所有非菜单元素的实体时。好实际上,你只是选择了同一个身体。它的操作如下:$'body'。单击函数{menu.hide;};所以,即使你点击菜单并且菜单在正文中,它也会隐藏菜单,所以为了让菜单部分可见,menuelement应该是一个divI,很抱歉,但是你的评论不清楚。我是说,不是。。。不会忽略单击菜单元素。它将从先前匹配的元素列表中抛出menuelement。但是$body将只匹配。如果menuelement是一个位于body标记内的div,则完全匹配。在menuelement中是你们的菜单,当我点击menuelement时,它在body中也会隐藏,所以为了克服这个问题,我使用了。notmenuelemenet。它将不起作用。因为,不是这样。它只是过滤掉先前匹配的元素。$'body'-查找一个元素,body。not'menuelement'测试上一个查询的结果集是否有与not选择器匹配的元素,并将它们抛出。在本例中,您只需在$body上放置一个click处理程序,得到与初始OP代码相同的结果