![](/img/trans.png)
[英]When a button is clicked (click) event should execute after <a href> event
[英]how to prevent all <a> navigation when a button inside it is clicked? example: <a href="url1"><a href="url2"><button>click</button></a></a>
我的實際代碼中有一個約束,但是這個問題可能會幫助我解決我的問題,它與此類似。
我知道嵌入 2 個錨標記是個壞主意,但這是對我無法在實際項目中更改的代碼的限制,但我很高興學習一些方法來解決我提出的問題
我有一個anchor tag
,它是另一個anchor tag
的父級,最后一個anchor tag
有一個button
。 我希望當我專門單擊此按鈕時,阻止執行anchor tag
的導航並執行按鈕的 function。
但如果您單擊button
以外的任何其他元素,我希望導航正常進行。
我該怎么做?
function clickedButton(event){ event.preventDefault(); console.log("click"); alert("click") }
body,html{ margin:0px; padding:0px; } #mainLink{ border:1px solid red; } #secondaryLink{ border:1px solid blue; padding:20px; }
<a href="www.google.com" id="mainLink"> go to google <a href="www.wikipedia.com" id="secondaryLink"> go to wikipedia <button onclick="clickedButton(event)">click</button> </a> </a>
<button onclick="clickedButton(event)">click</button>
<script>
clickedButton = function(e){
console.log("click");
[...] Any code you want
e.preventDefault();
</script>
" preventDefault() 方法取消事件,如果它是可取消的,這意味着屬於該事件的默認操作將不會發生。例如,這在以下情況下很有用:單擊“提交”按鈕,阻止它提交表格。點擊一個鏈接,防止鏈接跟隨 URL ” - w3school
這是一個骯臟的解決方案。
循環遍歷由錨點包裹的所有按鈕,並用添加了新 class 的按鈕替換錨點標簽。 並在正文中添加一個點擊處理程序,並使用該 class 查找對元素的點擊。
並通過 CSS 隱藏額外的最頂部錨點。
document.addEventListener("click", function(e) { if (e.target.className.indexOf("btnClick") > -1) { console.log("clicked") } }); let linkBTNs = document.querySelectorAll("a > button"); linkBTNs.forEach(function(btn) { btn.className = "btnClick"; btn.parentNode.replaceWith(btn) });
.btnClick { color: red; } html,body{height:100%;} #mainLink{display:none}
<a href="www.google.com" id="mainLink"> go to google <a href="www.wikipedia.com" id="secondaryLink"> go to wikipedia <button>click</button> </a> </a>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.