【问题标题】:Make menu parent expand if child is currently active如果子项当前处于活动状态,则使菜单父项展开
【发布时间】:2016-09-14 19:38:13
【问题描述】:

我目前正在尝试制作一个菜单,该菜单在单击时可展开,保持打开状态,直到单击孩子为止,然后应将用户带到该页面,并且在到达该站点时仍应展开菜单。 (目前它崩溃了)。

我目前已经完成了我有一个菜单的部分,该菜单在单击时会展开并显示子项。它目前是用 javascript 制作的。我正在使用 wordpress 制作菜单,wordpress 会自动将类“current-menu-item”添加到正在访问的 li 中(如果有帮助的话)。

var clickMenu = function() {
	var getEls = document.getElementById("menu-shopmenu").getElementsByTagName("LI");
	var getAgn = getEls;

	for (var i=0; i<getEls.length; i++) {
			getEls[i].onclick=function() {
				for (var x=0; x<getAgn.length; x++) {
				getAgn[x].className=getAgn[x].className.replace("unclick", "");
				getAgn[x].className=getAgn[x].className.replace("click", "unclick");
				}
			if ((this.className.indexOf('unclick'))!=-1) {
				this.className=this.className.replace("unclick", "");;
				}
				else {
				this.className+=" click";
				}
			}
			getEls[i].onmouseover=function() {
				this.className+=" hover";
			}
			getEls[i].onmouseout=function() {
				this.className=this.className.replace("hover", "");
			}
		}
	}
	
window.addEventListener("load", clickMenu);

现在我只是在寻求帮助,使其在新页面加载后保持扩展。

另外,这两个功能会不会在设计上产生冲突?

【问题讨论】:

  • 您好,我在检查了您参考中的语法后再次尝试了您的方法,现在它可以工作了。但随之而来的是一些新问题。如果将来 i 应该在两个不同的父类别下有一个子类别 A,那么它们都会被扩展。另外,由于它是我正在开发的网上商店,我希望在查看产品时扩展菜单。

标签: javascript jquery html css menu


【解决方案1】:

您可以只检查 current-menu-item 元素的“父级”。并应用 display:block 或任何其他使菜单元素可见的 css。 检查下面的代码是否符合您的要求。

$(document).ready(function(){
    $(".current-menu-item").parent("your_parent_ul_div").css("display": "block");
});

ref-https://api.jquery.com/parent/


ref->Expand parent menu if child menu is selected

ref->https://webdesignerhut.com/active-class-navigation-menu/

【讨论】:

  • 感谢您的回答。这是我试图创建的菜单的链接,我认为您想查看 html。不要介意混乱:) web14.simo9928.iba-abakomp.dk/wordpress/produkt-kategori/… 我没有运气就尝试了你的例子。目前正在尝试这个: $(document).ready(function(){ var pgurl = window.location.href.substr(window.location.href.lastIndexOf("/")+1); $(".sub-menu li a").each(function(){ if($(this).attr("href") == pgurl ) $(this).addClass("active"); }) });任何帮助表示赞赏。
  • 我在哪里添加了 active { display: block !important; } 到 css
猜你喜欢
  • 2012-12-27
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 2016-05-03
  • 1970-01-01
  • 2012-08-07
相关资源
最近更新 更多