2017-03-28 187 views
0

我在我的网站上有一个菜单按钮(“showmenu”),点击后会打开菜单div。我也有,如果用户点击它之外的关闭菜单代码(我发现这里)jquery点击外部div来关闭,问题

// code to open/close menu 
$(document).ready(function() { 
    $('#showmenu').click(function() { 
      $('.menu').slideToggle("fast"); 
    }); 

// code for clicking outside menu to close 
$(document).mouseup(function (e) { 
    var container = $('.menu'); 
    if (!container.is(e.target) && container.has(e.target).length === 0) { 
     container.hide(); 
     } 
    }); 

}); 

此代码给了我,虽然问题。我可以使用“showmenu”按钮打开菜单,但我无法再次单击该按钮关闭它。我可以关闭菜单的唯一方法是点击它。

有什么建议吗?

+0

而HTML是? – epascarello

回答

0

这条线:

container.has(e.target).length === 0 

正在检查如果点击目标不是容器元素的父。但是,通过检查长度等于零,当您想检查它是否为true时,这将评估为false,即,当您点击其父母之一时隐藏容器。

此外,您需要更改

e.target 

$(e.target) 

把它当作一个jQuery对象。

行更改为

container.has($(e.target)).length > 0 

,它应该工作!

+0

感谢您的回复。我改变了这一点,虽然我可以打开和关闭菜单,但我无法在菜单外点击关闭它。 – user961882

+0

看到我编辑的答复。您还需要将e.target包装到$()中以将其选为jQuery对象 –