javascript - 使用#(使用javascript或jquery)动态地将return false添加到所有锚点
问题描述
我在 HTML 中有以下菜单:
在这一点上,我已经在 HTML 中硬编码了onclick="return false"
右边(见下文)。我读过这是不好的做法。我想知道如何return false
使用 jquery 和/或 javascript 添加(或 e.preventdefault)到所有具有 # 的 href 的锚点。
<div id="bar" >
<label id="toggle-label" for="toggle-1">Menu</label>
<input type="checkbox" id="toggle-1">
<ul class="menu">
<li><a href="/">Home</a></li>
<li><a href="#" onclick="return false;">Item with sub</a>
<ul>
<li><a href="https://google.com" target="_blank">Sub 1.1</a></li>
<li><a href="/something">Sub 1.2</a></li>
</ul>
</li>
<li><a href="#" onclick="return false;">Item with sub-sub</a>
<ul>
<li><a href="/something">service-1</a></li>
<li><a href="#" onclick="return false;">Item with sub</a>
<ul>
<li><a href="/something">sub sub 1</a></li>
<li><a href="/something">sub sub 2</a></li>
<li><a href="/something">sub sub 3</a></li>
</ul>
</li>
<li><a href="/electrical">Electrical</a></li>
</ul>
</li>
<li><a href="/pricing">Pricing</a></li>
<li><a href="/contact">Contact Us</a></li>
</ul>
</div>
解决方案
href='#'
使用 jQuery 选择器选择所有锚点,然后onclick
为它们添加一个侦听器。
var anchors = $("a[href='#']")
anchors.on("click", (ev) => {
ev.preventDefault();
console.clear()
console.log("anchor clicked");
return false
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="bar" >
<label id="toggle-label" for="toggle-1">Menu</label>
<input type="checkbox" id="toggle-1">
<ul class="menu">
<li><a href="#">Home</a></li>
<li><a href="#">Item with sub</a>
<ul>
<li><a href="https://google.com" target="_blank">Sub 1.1</a></li>
<li><a href="#">Sub 1.2</a></li>
</ul>
</li>
<li><a href="#">Item with sub-sub</a>
<ul>
<li><a href="#">service-1</a></li>
<li><a href="#">Item with sub</a>
<ul>
<li><a href="#">sub sub 1</a></li>
<li><a href="#">sub sub 2</a></li>
<li><a href="#">sub sub 3</a></li>
</ul>
</li>
<li><a href="#">Electrical</a></li>
</ul>
</li>
<li><a href="#">Pricing</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</div>
推荐阅读
- solr - SOLR - 如何获得 N 个最常见的术语和集合中的出现次数
- isabelle - 搜索 Isabelle 的一般定义、定理、函数等的最佳方法是什么?
- unity3d - 如何防止在 Unity 中渲染地板下方的对象
- angular - Angular 9 http.Get 带参数的请求
- python - 尝试将数据导出到 Google 表格时出现 400 错误
- swift - Google 使用 Firebase 登录以检查用户是否已存在
- javascript - 有没有办法缩短我在 JavaScript 中的代码?
- c# - 快速计算最大匹配数的算法
- flutter - 如何在颤振中创建多页警报对话框?
- c# - 使用 Linq 在列表中搜索