2011-05-08 121 views
32

我發現很多的功能,像這樣的:什麼時候應該在jquery函數中使用return false?

$(function() { 
    $("body a").click(function() { 
     alert(this.innerHTML); 
     return false; 
    }); 
}); 

什麼this和jQuery的$(this)之間的區別?

他們都有一條線return false; - 我不知道我應該在jQuery中使用return false函數,不知道它有什麼用處?

回答

54

根據jQuery Events: Stop (Mis)Using Return False(存檔鏈接),返回false調用時執行三項任務:

  1. event.preventDefault();
  2. event.stopPropagation();
  3. 停止回調執行並在調用時立即返回。

取消默認行爲所需的唯一操作是preventDefault()。發行return false;可以創建脆弱的代碼。通常你會想眼前這個:

$("a").on('click', function (e) { 
    // e == our event data 
    e.preventDefault(); 
}); 

其次「這」是一個DOM元素JavaScript和「$(本)」是一個jQuery元素 引用的DOM元素。請閱讀jQuery's this: demystified的主題。

+0

+1的鏈接教學。謝謝。 – 2011-05-08 13:38:12

+0

+1精彩鏈接 – diEcho 2011-05-08 13:41:43

+0

感謝您的鏈接:) – Facedown 2013-10-07 20:04:46

8

您正在點擊一個錨,其默認行爲是在某處導航。返回false可能會阻止導航並將用戶保留在當前頁面/視圖上。

+0

+1與簡單,短線 – diEcho 2011-05-08 13:43:00

2

在點擊處理程序的範圍內,this是展開的DOM元素。 $(this)包裝它並返回一個jQuery元素。通常的做法是將其包裝一次,並在that或經常$this(以$爲變量名前加一個表示jQuery元素的約定)作爲範圍。

你的例子因此可以寫成

$(function() { 
    $("body a").click(function() { 
     var $this = $(this); 
     alert($this.html()); 
     return false; 
    }); 
}); 
相關問題