点击后隐藏下拉菜单在重新扫描后不显示

时间:2015-10-02 07:52:21

标签: javascript jquery html css

我的菜单项不会重定向到其他页面,因此点击后它们不会隐藏。我可以使用javascript或jquery隐藏它们,但它们永远隐藏起来。我已经尝试了每一个建议,但它们都不适合我。这是我的HTML:

    <nav>
      <ul>
        <li class="windows"><a href="#">Windows</a>
          <ul>
            <li><a href="#" class="tile">Tile</a></li>
            <li><a href="#" class="closeAll">Close all</a></li>
          </ul>
        </li>
      </ul>
    </nav>

我的css:

     nav ul ul {
       display: none;
       position: absolute;
       top: 100%;
       z-index: 1003;
     }

     nav ul li:hover > ul {
       display: block;
       height: auto;
     }

和我的javascript for tile:

    tileObject = $('a.tile');
    tileObject.click(function () {
      $('.windows ul').hide();
      tileAction();
    });

3 个答案:

答案 0 :(得分:2)

如果您使用$('.windows ul').hide();隐藏菜单,则需要执行$('.windows ul').show();(或等效的东西)才能再次显示。

因为$('.windows ul')将被隐藏。您需要将事件绑定到另一个元素,例如

$('li.windows').click(function(){
    $('.windows ul').show()
});`

- 编辑 -

为此,您不需要javascript。检查fiddle。只需使用选择器:hover即可。然后,如果您想使用JS执行某些操作,只需使用hover事件。看看docs

- 编辑2 -

我现在明白了。检查this。您需要在隐藏元素之前取消绑定悬停事件。然后在隐藏元素后再次绑定它。

答案 1 :(得分:0)

你可以尝试这个:

$(document).ready(function(){
    $("li a.tile").click(function(){
        $("body").off("hover", "li.windows");
        $("nav ul li ul").hide();
        $("li.windows").hover(function(){
            $("nav ul li ul").show();
        });
    });


});

DEMO

答案 2 :(得分:-1)

如果你是隐藏和元素,那么你需要再次显示它。首先,你的css中有top:100%,你不需要这个。