3

只是想深入了解 jquery,如果这已经得到解答,请原谅我。搜索但找不到与我正在尝试做的事情相关的示例。

我有一个带有一些子菜单的垂直菜单。当点击顶层菜单时,子菜单打开是有效的。问题是我希望在单击子菜单项之一时子菜单保持打开状态。就像现在一样,当单击子菜单项时,菜单会折叠。

这是我的代码:

// Add class of drop if item has sub-menu
$('ul.sub-menu').closest('li').addClass('drop');

// Left Sidebar Main Navigation
var menu_ul = $('.menu > li.drop > ul'),
    menu_a  = $('.menu > li.drop > a');

menu_ul.hide();

menu_a.click(function(e) {
    e.preventDefault();
    if(!$(this).hasClass('active')) {
        menu_a.removeClass('active');
        menu_ul.filter(':visible').slideUp('normal');
        $(this).addClass('active').next().stop(true,true).slideDown('normal');
    } else {
        $(this).removeClass('active');
        $(this).next().stop(true,true).slideUp('normal');
    }
});

我想如果我尝试将我想要的内容翻译成一个清晰的编码类型句子,它会这样读。基本上我需要在 DOM 中查询任何具有子菜单的活动菜单,如果页面显示其中一个子菜单项,则显示子菜单下拉菜单。

4

3 回答 3

1

我认为你有两个选择。

  1. 考虑使用 Ajax 加载页面
  2. 模拟每个页面的点击事件。

例如:

对于“投资组合”项目添加此

<script type="text/javascript">
  $(document).ready(function(){
      jQuery('#menu-item-38>a').trigger('click');
  });
</script>

对于“关于我们”:

<script type="text/javascript">
  $(document).ready(function(){
      jQuery('#menu-item-180>a').trigger('click');
  });
</script>
于 2012-08-10T18:12:59.937 回答
0

去掉这条线怎么样

menu_ul.filter(':visible').slideUp('normal');

它会阻止隐藏非活动菜单。

试一试,让我们知道。

于 2012-08-10T19:19:48.257 回答
0

在样式表中创建一个额外的类

.menu ul.keepthisopen {display:block !important;}

将类添加到要保持打开的子菜单中的 ul 中。

(示例)在“关于”页面上,进入代码,找到菜单,找到“关于”链接,这是一个

  • 项目,其下方是该项目的子菜单。将其更改为

    <ul class="keepthisopen">
    

    在这里工作正常,使用与您使用的相同的代码/脚本。如果您单击另一个菜单项,子菜单也会再次向上滑动。

    我正在使用纯代码(小型站点),所以我很容易为每个页面手动更改它。

  • 于 2013-12-26T15:18:33.573 回答