javascript - 如果选择了子菜单,则展开父菜单

标签 javascript jquery css menu

我有一个带有子子菜单的菜单。我面临的问题是,每当我在页面加载后选择子菜单时,菜单就会折叠。我想打开展开的父菜单。

HTML 代码是:


<div id='cssmenu'>
        <ul>
            <li><a href='http://internallink.com/home'><span>Home</span></a></li>
            <li class='active has-sub'><a href='http://internallink.com/products'><span>Products</span></a>
                <ul>
                    <li class='has-sub'><a href='http://internallink.com/product1'><span>Product 1</span></a>
                        <ul>
                            <li><a href='http://internallink.com/subProduct'><span>Sub Product</span></a></li>
                            <li class='last'><a href='http://internallink.com/subProduct'><span>Sub Product</span></a></li>
                        </ul>
                    </li>
                    <li class='has-sub'><a href='http://internallink.com/product2'><span>Product 2</span></a>
                        <ul>
                            <li><a href='http://internallink.com/subProduct'><span>Sub Product</span></a></li>
                            <li class='last'><a href='http://internallink.com/subProduct'><span>Sub Product</span></a></li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li><a href='http://internallink.com/about'><span>About</span></a></li>
            <li class='last'><a href='http://internallink.com/contact'><span>Contact</span></a></li>
        </ul>
    </div>

JS 是:


jQuery(document).ready(function () {
    jQuery('#cssmenu').on("click","li.has-sub .holder",function () {
        var element = jQuery(this).parent('li');
        if (element.hasClass('open')) {
            element.removeClass('open');
            element.find('li').removeClass('open');
            element.find('ul').slideUp();
        }
        else {
            element.addClass('open');
            element.children('ul').slideDown();
            element.siblings('li').children('ul').slideUp();
            element.siblings('li').removeClass('open');
            element.siblings('li').find('li').removeClass('open');
            element.siblings('li').find('ul').slideUp();
        }
    });

    jQuery('#cssmenu ul li.has-sub').prepend('<span class="holder"></span>');

});

如果选择了子菜单,我如何展开父菜单。

fiddle :https://jsfiddle.net/x415mjfq/

最佳答案

您在链接中有完整的绝对 URL;这可以为您所用。只需将 document.querySelector 与方括号选择器和 location.href 属性一起使用:

document.querySelector("a[href='" + location.href + "']").classList.add("selected");

然后,做任何你需要做的事情。在此示例中,我添加了 selected 类。

Fiddle

关于javascript - 如果选择了子菜单,则展开父菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35070031/

相关文章:

javascript - 引用 JavaScript 插件中的错误

javascript - 背景淡入淡出,将焦点留在弹出窗体/元素上

javascript - 我必须调用 sendResponse 吗?

javascript - AngularJS 值作为函数中的参数?

使用 npm 和 grunt 进行开发和生产的 Javascript 元素结构

javascript - jquery div滚动问题

javascript - 如何使用ajax多次发出请求而不进行硬刷新

javascript - 有没有更简洁的方法来解析我的 HTML 数据?

HTML 表格(并排)不适合超大屏幕

javascript - 如果文本字段为空,则使用 JavaScript 应用 CSS 样式