【问题标题】:JQuery: only one drop down menu opened at a timeJQuery:一次只打开一个下拉菜单
【发布时间】:2014-02-26 18:04:39
【问题描述】:

我即将用一些 jQuery 制作一个简单的下拉菜单。

这是我的菜单的蓝图:

http://jsfiddle.net/W9c9y/

这是我的 jQuery:

$( "a.drop_down" ).click(function () {

if ( $(this).siblings("ul").is( ":hidden" ) ) {
$(this).siblings("ul").slideToggle('slow','easeOutBounce');
} 

else {
$(this).siblings("ul").hide();
}
});

这就是我想要实现的目标:

我只想一次打开一个下拉菜单,任何菜单点击(包括子菜单)都应该关闭已经打开的下拉菜单。当然,如果我点击另一个下拉菜单,它不仅应该关闭打开的菜单,还应该关闭下拉菜单。

如果有任何建议,我将不胜感激。

【问题讨论】:

    标签: jquery drop-down-menu


    【解决方案1】:

    只需给打开的下拉菜单一个“open”类,然后在应该显示新的下拉菜单时隐藏与该类匹配的ul元素:

    $( "a.drop_down" ).click(function () {
        var $ul = $(this).siblings("ul");
        if ( $ul.is( ":hidden" ) ) {
            $('.open').hide();
            $ul.addClass('open').slideToggle('slow','easeOutBounce');
        } 
        else {
            $ul.hide();
        }
    });
    

    JSFiddle demo.

    【讨论】:

      【解决方案2】:
          $( "a.drop_down" ).click(function () {
          if ( $(this).siblings("ul").is( ":hidden" ) ) {
          $(".main_list ul").hide();
          $(this).siblings("ul").slideToggle('slow','easeOutBounce');
          } 
      
          else {
          $(this).siblings("ul").hide();
          }
          });
      

      小提琴:- http://jsfiddle.net/W9c9y/8/

      【讨论】:

      • 你为什么要重复 if 条件两次? f ( $(this).siblings("ul").is( ":hidden" ) == true )if ( $(this).siblings("ul").is( ":hidden" ) ) 做同样的事情。
      猜你喜欢
      • 1970-01-01
      • 2017-01-10
      • 2021-10-19
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多