![](/img/trans.png)
[英]How to prevent clicking on a child element triggering the click on the label that it is inside?
[英]Prevent click on label from triggering child button
當像這樣設置時,單擊具有子按鈕的 label 會觸發按鈕的 onclick 事件:
function fireButton() { console.log("Button fired;"); }
<label>Label <button onclick="fireButton()">Button</button> </label>
有沒有辦法防止這種情況?
添加for屬性為label。
function fireButton() { console.log("Button fired;"); }
<label for=''>Label <button onclick="fireButton()">Button</button> </label>
您可以將按鈕放在 label 之外
<label>Label</label>
<button onclick="fireButton()">Button</button>
您可以為標簽添加 preventDefault 並保留現有代碼:
document.querySelector("label").addEventListener("click", function(event) {
event.preventDefault();
}, false);
您可以使用不同的標簽,例如<span>
而不是label
但是如果您真的需要使用<label>
,您應該阻止 label onclick()
的默認行為,如下所示:
function fireButton(){ //add actions here } function preventDefault(event){ event.preventDefault() }
<label onclick="preventDefault(event)">Label <button onclick="fireButton()">Button</button> </label>
這是 CSS 中的一種方法,當單擊 label 時,它也禁用觸發button
的:active
label
。 覆蓋label
的onClick
事件不會這樣做。
label {
pointer-events: none;
}
button {
pointer-events: initial;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.