2014-10-01 98 views
1

因此,我发现这个jQuery手风琴菜单代码是为我正在处理的WordPress网站设计的。一切正常,但当我点击一个子菜单项并加载页面时,手风琴就会关闭。我希望在页面加载时打开当前部分,以便您可以查看您正在浏览的页面。突出显示jQuery手风琴菜单中的活动链接

我已经尝试了一堆不同的东西,使用.slideDown('normal')上的WordPress指定给家长<li>.current-menu-parent等,但唉什么都没有奏效。我不熟悉JavaScript/jQuery,所以希望有人能帮助我。

这是当前的jQuery代码:

(function($) { 
    $(document).ready(function() { 

     $('#cssmenu > ul > li > a').click(function() { 

      $('#cssmenu li').removeClass('active'); 
      $(this).closest('li').addClass('active'); 
      var checkElement = $(this).next(); 

      if((checkElement.is('ul')) && (checkElement.is(':visible'))) { 
       $(this).closest('li').removeClass('active'); 
       checkElement.slideUp('normal'); 
      } 

      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
       $('#cssmenu ul ul:visible').slideUp('normal'); 
       checkElement.slideDown('normal'); 
      } 

      if($(this).closest('li').find('ul').children().length == 0) { 
       return true; 
      } else { 
       return false; 
      }  

     }); 
    }); 
})(jQuery); 

This是我来自哪里得到它。

+0

一个想法:你可以将其中一个的ID设置为url参数(例如,domain.com/page?tab_id=5),[抓住该ID](https://stackoverflow.com/questions/19491336/get-url-parameter-jquery)在页面加载和[以编程方式打开选项卡](https://stackoverflow.com/questions/11041420/how-to-programmatically-open-jquery-accordion-content-panel)你我想展示。 – filoxo 2014-10-01 15:53:12

+0

是不是以编程方式打开jQuery手风琴小部件的选项卡?这只是我找到的一些自定义代码。不知道这是否会在这种情况下工作(就像我说我是jQuery的新手,所以如果你不同意,我会尝试使用它)。思考? – pinmouse 2014-10-01 16:02:28

+0

这绝对不会是一样的,但原则是相似的。您可以在教程页面的源代码行中看到315行声明的点击事件。 – filoxo 2014-10-01 16:29:12

回答

1

没有看到您的菜单输出,有点难以分辨......但您需要做的是触发点击事件,不仅仅是查看页面,还是祖先。并在点击事件之外进行。像这样的东西(你的代码,略作修改):

(function($) { $(document).ready(function() { 

    $('.current-page-ancestor > a').trigger('click'); 
    $('.current-menu-item > a').trigger('click'); 

    $('#cssmenu > ul > li > a').click(function() { 

     $('#cssmenu li').removeClass('active'); 
     $(this).closest('li').addClass('active'); 
     var checkElement = $(this).next(); 

     if((checkElement.is('ul')) && (checkElement.is(':visible'))) { 
      $(this).closest('li').removeClass('active'); 
      checkElement.slideUp('normal'); 
     } 

     if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
      $('#cssmenu ul ul:visible').slideUp('normal'); 
      checkElement.slideDown('normal'); 
     } 

     if($(this).closest('li').find('ul').children().length == 0) { 
      return true; 
     } else { 
      return false; 
     }  

    }); 
}); 

})(jQuery); 

作为一个方面说明,我知道不回答你直接问...但是这整个过程可能与使用CSS转换来实现更简单通过JS ...和更可靠,更少依赖于JS。你确实使用少量的JS来添加/删除一个类,但是CSS控制着动画。

如果JS被禁用,你可以有一个更优雅的退化...使用css:hover伪允许手风琴仍然工作。此外,您可以使用默认的WordPress菜单类,通过CSS在页面加载时打开手风琴,而不是依靠JS来找到应该打开哪一个......只是一个想法。

+1

嘿,谢谢,这让它工作......但只有当我把.tricks按钮写在.click函数后面。 至于CSS的建议。是的,我同意,下次也许。 :) 再次感谢! – pinmouse 2014-10-01 19:32:55

+0

很高兴解决。在函数创建后调用这些函数是有道理的,因为它甚至不知道函数存在! :)没有想到通过一个... – 2014-10-01 19:45:51