【问题标题】:Close accordian item when another is clicked单击另一个时关闭手风琴项
【发布时间】:2017-12-18 19:41:10
【问题描述】:

这是jsfiddle 上的工作示例

我正在尝试添加一个 sn-p 以在单击一个时关闭打开的手风琴项目。我添加了一个“打开”类,但在单击另一个类时似乎无法删除该类。

目前它们都可以打开,但我不想阻止这种情况发生,因为它在移动设备上占用了太多空间并强制背景滚动,这也会导致导航崩溃。

$( document ).ready(function() {


    // header js
        (function($) {
        $.fn.menumaker = function(options) {  
         var cssmenu = $(this), settings = $.extend({
           format: "dropdown",
         }, options);
         return this.each(function() {
           $(this).find(".hamburger-button").on('click', function(){
             $(this).toggleClass('menu-opened');
             var mainmenu = $(this).next('ul');
             if (mainmenu.hasClass('open')) { 
               mainmenu.slideToggle().removeClass('open');
             }
             else {
               mainmenu.slideToggle().addClass('open');
               if (settings.format === "dropdown") {
                 mainmenu.find('ul').show();
               }
             }
           });
           cssmenu.find('li ul').parent().addClass('has-sub');
           
           

          

          $('#cssmenu li.active').addClass('open').children('ul').show();
            $('#cssmenu li.has-sub>a').on('click', function(){
              $(this).removeAttr('href');
              var element = $(this).parent('li');
              if (element.hasClass('open')) {
                element.removeClass('open');
                element.find('li').removeClass('open');
                element.find('ul').slideUp(200);
              }
              else {
                element.addClass('open');
                element.children('ul').slideDown(200);
                element.siblings('li').children('ul').slideUp(200);
                element.siblings('li').removeClass('open');
                element.siblings('li').find('li').removeClass('open');
                element.siblings('li').find('ul').slideUp(200);
              }
            });

        

      /*
           
          multiTg = function() {
             cssmenu.find(".has-sub").prepend('<span class="submenu-button"></span>');
             cssmenu.find('.submenu-button').on('click', function() {
               $(this).toggleClass('submenu-opened');
               if ($(this).siblings('.has-sub').hasClass('open')) {
                 $(this).siblings('ul').removeClass('open').slideToggle();
               }
               else {
                 $(this).siblings('ul').addClass('open').slideToggle();
               }
             });
           };
      */     
      
     
           if (settings.format === 'multitoggle') multiTg();
           else cssmenu.addClass('dropdown');
           
           
           
        resizeFix = function() {
          var mediasize = 1000;
             if ($( window ).width() > mediasize) {
               cssmenu.find('ul').show();
             }
             if ($(window).width() <= mediasize) {
               cssmenu.find('ul').hide().removeClass('open');
             }
           };
           resizeFix();
           return $(window).on('resize', resizeFix);
         });
          };
        })($);

        (function($){
        $(document).ready(function(){
        $("#cssmenu").menumaker({
           format: "multitoggle"
        });
        });
        })($);


});

【问题讨论】:

    标签: javascript jquery css toggle


    【解决方案1】:

    这样的事情怎么样:

          cssmenu.children().forEach(function(elem){
             if(elem === mainmenu){
               continue;
             }
             elem.removeClass('open');
          });
          mainmenu.slideToggle().addClass('open');
          if (settings.format === "dropdown") {
            mainmenu.find('ul').show();
          }
    

    在添加开放类之前,将其从所有其他元素中清除。

    【讨论】:

    • 感谢您花时间回答。看起来通过事先清除所有其他元素,它可以防止手风琴完全打开。 jsfiddle.net/mLugf6fk/3
    • 我已经更新:jsfiddle.net/mLugf6fk/22 现在可以让手风琴项目按应有的方式打开/关闭,但现在我失去了 +/- 指标(代码在示例中被注释掉)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2021-12-10
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多