保持元素打开,在其他任何地方点击时关闭

时间:2015-05-11 08:49:14

标签: jquery drop-down-menu

按下链接(.account)时,会出现下拉列表。但是,我无法确定如何让活动中的下拉列表保持关闭状态,只有在下拉列表外的任何位置按下时才会关闭

        $(".account").click(function(e){

            e.stopPropagation();

            var oBody = $("body")
                oButton = $(".account")

            if (oBody.hasClass("open-says-me") & oButton.hasClass("active")) 
            {
                oBody.removeClass("open-says-me");
                oButton.removeClass("active");

                jQuery(document).off("touchstart click");

            } else {

                oBody.addClass("open-says-me");
                oButton.addClass("active");


                jQuery('html').on("touchstart click", function() {
                        oBody.removeClass("open-says-me");
                        oButton.removeClass("active");
                    });
            }

        });

如果用户点击/触摸下拉菜单之外的任何位置,我该如何让它保持打开和关闭 使用我的实际代码,当我点击按钮时带有.account - >面板打开 - >点击它关闭的文档上的任意位置 然而,如果你单击/触摸面板本身甚至关闭它,这不是我想要的,我试图在你点击任何地方时这样做,但它关闭的下拉菜单。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

看到这篇文章:jQuery: Stop dropdown menu from collapsing when clicking on its children
如果您有这样的DOM:

<ul class="dropdown">
 <li><a href="#" class="noclick nojs">Select your Topic</a>
  <ul class="nojs" >
    <li><a href="#">Link 1</a></li>
    <li><a href="#">Link 2</a></li>
    <li><a href="#">Link 3</a></li>
  </ul>
 </li>
</ul>

您必须添加以下代码:

$('ul.nojs *').click(function(e){
   e.stopPropagation(); 
});​

看起来您使用的.account就像其他帖子的.dropdown一样。尝试使用此功能,如果无法使用,请在您的问题中发布DOM。