如何禁用嵌套ul中的所有链接,除了最低级别的链接
How to disable all links inside a nested ul, except for the ones at the lowest level?
假设我有一个列表,像这样:
<ul>
<li><a href="Sitepages/Introduction.aspx">Introduction</a>
<ul>
<li><a href="Sitepages/AboutMe.aspx">About me</a></li>
<li><a href="Sitepages/AboutTheCompany.aspx">About the company</a>
<ul>
<li><a href="Sitepages/History.aspx">History</a></li>
<li><a href="Sitepages/Locations.aspx">Locations</a>
<ul>
<li><a href="Sitepages/Belgium.aspx">Belgium</a></li>
<li><a href="Sitepages/France.aspx">France</a></li>
<li><a href="Sitepages/Germany.aspx">Germany</a></li>
<li><a href="Sitepages/Norway.aspx">Norway</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
我有一个脚本,将这个嵌套的ul转换为手风琴,以便首先只显示顶层。只要有人点击了包含另一个ul的li中的链接,它就会展开这个ul,以此类推。
问题是,虽然没有提供链接时所有这些都可以正常工作,但我想禁用每个"a"标记的默认行为,除了最低级别的那些。因此,最低级别的li标记(其中有一个链接)仍然应该是活动链接。
下面是禁用顶级链接默认行为的javascript代码:
$this.find("li").each(function(){
if ($(this).find("ul").size() != 0) {
if ($(this).find("a:first")) {
$(this).find("a:first").click(function(){ return false; });
}
});
虽然顶层链接(简介)在点击时会忽略默认行为(重定向),但它会展开并显示"关于我"answers"关于公司"选项。但是当我点击"关于公司"时,它仍然会重定向。
我应该在我的代码中编辑什么来设置每个"a"标签的默认行为为false,除了最后一个(在我的例子中:国家名称)?
谢谢你的帮助!
可以设置两个处理程序。一个用于禁用无序列表中的所有链接,另一个用于处理最后一个无序列表上的单击:
// Disable all links within an ul
$('ul').on("click", "a", function(e){
e.preventDefault();
});
// second handler to bind to the last ul
$('ul:last').on("click", "a", function(e){
window.location.href = $(e.target).attr('href');
});
小提琴:http://jsfiddle.net/puleos/CjB99/
相关文章:
- 截断文本而不点击嵌套链接
- 如何使用嵌套的 React 组件从“链接页面”的顶部开始
- 页面重新加载后,指向嵌套资源的链接将丢失活动类
- 这个promise嵌套可以改为链接吗
- 将多个链接表映射到嵌套的JQuery手风琴
- 如何使 jquery 嵌套选项卡链接工作
- 嵌套手风琴不会以 h2 作为链接关闭
- 有没有更简单的方法可以为不同的选择器链接不同的 jQuery 操作,然后嵌套 $.when
- 如何使用vanilla Javascript识别无序和/或嵌套列表序列中的上一个/下一个链接
- JS:用另一个单词替换链接.嵌套引号+转义码
- 通过字符串键获取到嵌套对象的链接
- 防止从嵌套链接展开/折叠
- Ajax请求链接/嵌套
- 使用jquery在嵌套列表中选择所有未链接的项目
- 如何禁用嵌套ul中的所有链接,除了最低级别的链接
- 如果我插入到嵌套出口的链接,Ember网站就会崩溃
- 根据在其中单击的链接查找嵌套的ul是哪个子元素
- 防止嵌套标签链接,但更改复选框状态
- 不知道如何将嵌套的promise与Q链接起来
- jQuery排序不能在嵌套链接上工作