A標簽onclick事件取消默認行為
阿新 • • 發佈:2017-12-01
www ogl ron 單擊 s函數 man blog 表示 屬性
在開發中,經常會碰到為a標簽綁定單擊事件,由於a標簽默認有跳轉的行為,所以會影響到我們的onclick事件的處理代碼。
我們需要屏蔽掉他的默認行為,下面是一些常用的方式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>方式1: href="javascript:void(0)"</h1>
<a href= "javascript:void(0)" onclick="alert(‘方式1, 執行一段代碼.‘)">情刑1: 執行一段代碼.</a> <br/>
<a href="javascript:void(0)" onclick="popup()">情刑2: 調用一個已聲明的js函數.</a> <br/>
<a href="javascript:void(0)" id="manual_bind_click_way1">情形3: 手動綁定click事件</a> <br/>
<h1>方式2: onclick="return false;"</h1>
<a href="http://www.google.com" onclick="alert(‘方式2, 執行一段代碼.‘); return false;">情刑1: 執行一段代碼.</a> <br/>
<a href="http://www.google.com" onclick="popup(); return false;">情刑2: 調用一個已聲明的js函數.</a> <br/>
<a href="http://www.google.com" id="manual_bind_click_way2">情刑3: 手動綁定click事件</a>
<script>
// 已聲明函數popup
function popup() {
alert("彈窗測試.");
}
// 手動綁定click
window.onload = function () {
var aEle_way1 = document.getElementById("manual_bind_click_way1"); // 方式1 a標簽.
aEle_way1.onclick = function () {
alert("手動綁定click事件.");
}
var aEle_way2 = document.getElementById("manual_bind_click_way2"); // 方式2 a標簽.
aEle_way2.onclick = function () {
alert("手動綁定click事件.");
return false;
}
}
</script>
</body>
</html>
在實現上大概有兩種方式:
- 方式1: 為href屬性添加
javascript:void(0)
來構造偽鏈接, 即為:href="javascript:void(0)"
- 方式2: 添加onclick屬性並在事件處理代碼中通過
return false;
來屏蔽默認行為, 即為:onclick="return false;"
(這種方式表示希望保留href屬性的內容.)
這兩種方式都會直接的屏蔽跳轉行為.
我們在開發中可能會遇到如下3種情況, 比如說
- 單擊a標簽後, 執行一段js代碼. (如情形1)
- 單擊a標簽後, 調用js中已經聲明的函數. (如情形2, 這種情況大家一般傳遞this對象, 即:
onclick="popup(this)"
) - 我們想要手動為a標簽綁定單擊事件, 但是在事件執行後依然不希望a標簽跳轉. (如情形3)
需要說明的是如果以方式2的來實現情形3, 那麽需要onclick事件處理最後返回false, 即return false, 否則執行完click事件後依然會跳轉.
A標簽onclick事件取消默認行為