1. 程式人生 > >A標簽onclick事件取消默認行為

A標簽onclick事件取消默認行為

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. 方式1: 為href屬性添加javascript:void(0)構造偽鏈接, 即為:href="javascript:void(0)"
  2. 方式2: 添加onclick屬性並在事件處理代碼中通過return false;屏蔽默認行為, 即為:onclick="return false;"(這種方式表示希望保留href屬性的內容.)

這兩種方式都會直接的屏蔽跳轉行為.


我們在開發中可能會遇到如下3種情況, 比如說

  1. 單擊a標簽後, 執行一段js代碼. (如情形1)
  2. 單擊a標簽後, 調用js中已經聲明的函數. (如情形2, 這種情況大家一般傳遞this對象, 即: onclick="popup(this)")
  3. 我們想要手動為a標簽綁定單擊事件, 但是在事件執行後依然不希望a標簽跳轉. (如情形3)

需要說明的是如果以方式2的來實現情形3, 那麽需要onclick事件處理最後返回false, 即return false, 否則執行完click事件後依然會跳轉.

A標簽onclick事件取消默認行為