在 Joomla (1.7.0) 中单击时显示嵌套列表
Show nested list on click in Joomla (1.7.0)
我对Joomla显示位于网站左侧的导航菜单有问题。我希望一些子菜单在单击其父级时打开。我想要的效果显示在提供的代码笔中。但是我想单击而不是将鼠标悬停在该项目上。
Joomla的事情是我必须将"父li-item"链接到一篇文章。即使我用javascript删除了href,如果我点击"li"项,joomla也会重新加载页面。这将撤消所需的效果(我尝试使用 javascript 应用特定类,单击后在嵌套列表中将"display:none"设置为"display:block")。
使用css,html,javascript或joomla覆盖的解决方案将具有我的偏好。
PS:我知道我使用的是旧版本的Joomla。我也许可以在不久的将来升级它(当我被授予访问网站控制面板的权限时)。
PS2:我知道有一个付费插件可以做到这一点,但我正在一个慈善网站上工作,我想将插件保持在最低限度。我也想知道如何在代码中做到这一点!
HTML
<ul>
<li>
<a href="something">Click me and don t load this link with Joomla</a>
<ul>
<li>Show me on click (not hover)</li>
</ul>
</li>
</ul>
.
CSS
ul>li>ul{
display: none;
}
ul>li:hover>ul{
display: block;
}
代码笔
我设法用这段代码做到了:
函数hasClass检查元素是否具有特定的类。
功能菜单机制禁用链接。并添加或删除类以显示或隐藏嵌套的 ul。
代码的最终规则在单击菜单力学函数后将它添加到所有"具有嵌套子项"类项中。
<script type="text/javascript">
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
function menuMechanics(event){
event.preventDefault();
if(hasClass(this.parentElement, "active") === true){
this.parentElement.className = this.parentElement.className.replace("active", "");
}
else{
this.parentElement.className += " active";
}
}
hasNestedChildren = document.getElementsByClassName('has-nested-children');
for(i=0; i<hasNestedChildren.length; i++){
hasNestedChildren[i].addEventListener("click", menuMechanics);
}
</script>
相关文章:
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- Jquery on单击“显示信息”
- VBA IE单击/显示没有id或标记而不是超链接的javascript
- Asp.net 客户端单击显示表中其他单元格的值
- 通过键盘单击显示按钮上的按键事件
- AngularJS嵌套具有多维数组的元素,并通过单击显示它们
- 如何通过单击显示数组和按钮
- 单击显示随机图像(Javascript)
- 隐藏李的子项并通过单击显示
- Angularjs 通过 ng 单击显示更多省略号文本
- on单击显示/隐藏 想要在隐藏 javascript 上折叠图像大小
- 隐藏对象并通过单击显示它
- 单击显示在同一页面或同一选项卡中
- on单击“显示iframe 5000”,然后隐藏
- 在表单字段HTML/JQuery中单击显示图像
- 显示或隐藏通过单击显示的信息
- 单击“显示日期”字段,然后单击“选择日期”隐藏日期字段
- 当用户单击“显示链接”时,显示密码,再次单击时将其隐藏
- 单击显示更多时显示更多图像
- 如何从目录加载图像,然后单击显示