首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

jQuery `click` 與 `attr("onclick")` 事件綁定差異:返回值傳遞機制導致預設行為阻擋成敗

     編輯:程式設計綜合問答

程式碼場景


點一下
點兩下

function returnFase(){ alert("aaaa"); return false; }

$("#a").attr("onclick", "returnFase()");   // 方式 1
$("#b").click(returnFase);                 // 方式 2

現象差異

  • 點擊 #a:彈窗 → 仍跳轉(預設行為未阻擋)。
  • 點擊 #b:彈窗 → 不跳轉(預設行為被阻擋)。

根本原因

方式機制返回值流向
attr("onclick", "returnFase()")直接設定 HTML 屬性字串函數返回值 未傳回 給事件處理器,等同 onclick="returnFase();" 缺少 return
click(returnFase)jQuery 事件系統綁定jQuery 內部呼叫處理函數,若返回 false,自動執行 event.preventDefault() + event.stopPropagation()

修正方式 1


$("#a").attr("onclick", "return returnFase()");  // 加上 return

最佳實踐建議

  • 統一使用 .on("click", handler) / .click(handler),避免字串拼接。
  • 處理函數回傳 false 即可阻擋預設行為,無需手動 event.preventDefault()。
  • 若需傳參:$("#a").click(function(){ return returnFase(arg); });。

原答案核心

「上面的標簽你只是覆蓋了單擊事件,但事件點擊後沒有把 false 這個值返回給對象... jquery 的 click 時,是指明了對象的,click 的返回值會直接反饋給對象」

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved