[英]Stopping event propagation from an onclick handler
我正在研究一個遺留的Web應用程序,我逐步調整並發現需要從內聯的onclick處理程序停止事件傳播。
以此為例:
<a id="inner" onclick="return handleOnclick();" href="#">Some link</a>
除了onclick處理程序之外,還有添加了addEventListener
偵聽器。 我需要在某些條件下onclick處理程序可以停止事件的傳播。 我已經嘗試過event.stopPropagation()
但它似乎沒有用。 這是一個測試的jsfiddle:
http://jsfiddle.net/APQk6/985/
有任何想法嗎?
根據Felix Kling的評論找到了解決方案:
event.stopImmediatePropagation()
而不是event.stopPropagation()
這是一個有效的解決方案:
您可以使用“已取消”屬性。 不好,但有效。 http://jsfiddle.net/koldev/45zbA/
HTML
<script>
function handleOnclick(self) {
self.setAttribute("cancelled", confirm('Stop event?') ? "1" : "0");
return false;
}
</script>
<div>
<a id="inner" onclick="return handleOnclick(this);" href="#">Some link</a>
</div>
JavaScript的
document.getElementById('inner').addEventListener('click', function(e){
if (this.getAttribute("cancelled") == "1") {
return;
}
alert("Listener called");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.