阻止子 li 可点击,但保留包含 a 的功能
Stop child li from being clickable but keep function of contained a
我有一个看起来像这样的导航:
<ul class="first-ul">
<li class="toggle-sub-menu"><a href="link1.html">1
<ul class="second-ul">
<li><a href="link2.html">2</a></li>
<li><a href="link3.html">3</a></li>
</ul>
</li>
</ul>
我的第二个ul被隐藏,并通过单击"切换子菜单"进行切换:
$('.toggle-sub-menu').click(function() {
$(this).children('ul').slideToggle(200)
});
现在,因为我只想在单击带有类"切换子菜单"的 li 时隐藏第二个 ul,而不是如果任何孩子喜欢孩子 li 或我添加的
$('.toggle-sub-menu').click(function() {
$(this).children('ul').slideToggle(200)
}).children().click(function(e) {
return false;
});
这可以防止 ul 在单击子项时隐藏,但是,它使带有 href 的"a"不再可单击。
我试过了
$('.toggle-sub-menu').click(function() {
$(this).children('ul').slideToggle(200)
}).children('ul').children('li').click(function(e) {
return false;
});
但是,a 标签仍然不可点击。我该怎么做才能使 li 不可点击但 a 标签正常工作?
您可以像这样修改它: 将类list-element
添加到您的 lis
$('.toggle-sub-menu').click(function() {
$(this).children('ul').slideToggle(200)
}).children('ul').children('li').click(function(e){
if($(e.target).hasClass('list-element'))
return false;
});
这不会使锚标记无法单击。
不要返回 false,而是尝试使用
e.preventDefault();
代码的这一部分
.children().click(function(e) {
return false;
})
将切换子菜单的子菜单的点击次数设置为 false。当 onclick for a 元素返回 false 时,这将取消单击它的默认操作 - 从而使"不可点击"。
如果您希望链接在单击时仍导航用户,则应确保其 onclick-code 返回 true 或以某种方式手动重定向用户。 即尝试写作
.children().click(function(e) {
return true;
})
这听起来像是需要一个纯粹的CSS解决方案。
li.toggle-sub-menu ul{
display:block;
}
li.toggle-sub-menu.active ul{
display:none;
}
这意味着当具有类toggle-sub-menu
的li
具有类active
显示其中的ul
时,请将其隐藏。这样点击就没有问题了。此外,此解决方案假设您的li
在单击类时使其处于活动状态并且处于活动状态。如果没有,那么您只需要在单击时添加和删除 li 的active
类。如果您需要进一步的帮助,请告诉我
相关文章:
- 分派点击事件并保留击键修饰符
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 货币代码为欧元-金额的格式不应包含小数
- 如何包含特定于每个视图angularjs的javascript文件
- 我如何修复包含在captcha的addthis中的错误
- 正在注入包含JS的HTML
- Json数据包含日期和时间格式
- Angular js-返回一个包含类似
- jQuery/JS包含运算符或类似运算符
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 如果href包含X,请更改href
- 提交后保留下拉选择的值
- JavaScript数组包含一个值
- ng包括如何保留已包含模板的内容
- Javascript对象保留包含旧数据
- 阻止子 li 可点击,但保留包含 a 的功能
- 当代码包含保留字时,设置代码的CSS
- 编写一个包含特殊保留字符的Javascript正则表达式
- 删除html换行代码,只保留行中包含内容的内容
- 我如何合并包含对象的JavaScript数组,重复数据删除并保留新对象