2010-10-08 139 views
35

是什麼這三種形式之間的差別:

this 
$this 
$(this) 

回答

48

典型使用你通常會看到他們像這樣(的$this使用可能會有所不同):

  • this - 指的是你目前的處理程序的DOM元素,但是這可能在其他情況下完全是另一個對象,但它始終是上下文。
  • $this - 通常由var $this = $(this)創建一個緩存版本的jQuery包裝版本以提高效率(或在多數情況下關閉$(this)以獲得相同的結果)。
  • $(this) - 元素的jQuery包裝版本,因此您可以訪問all its methods(具體在$.fn中的版本)。
+1

在jQuery出名之前,我記得看到'$ this'被用來引用父範圍對象,有點像'var that'。不過,我看到jQuery fenomena如何影響它的含義。 – 2010-10-08 10:30:11

+0

這個答案假設我們處在一個事件處理程序中:Alisey的回答更一般 – meouw 2010-10-08 11:49:24

+0

@meouw - 我不認爲它假設,我立即告誡它:「但這可能是完全在其他情況下的另一個對象。 *當你看到這一點時,大部分時間都是在那裏(我們主要是事件驅動),但不是唯一的地方。 – 2010-10-08 11:52:58

30
  • this是在其上方法被調用的對象
  • $this是沒有特殊含義
  • $(this)名爲不佳變量調用不佳命名功能$this作爲其唯一參數
+1

lol。短而乾淨。我喜歡+1。 – 2010-10-08 10:16:06

+0

他們的變量名稱被選中...很差。 – PaulJWilliams 2010-10-08 10:17:01

+15

我不同意你的#2,它是一個完全有效的名稱,它是用來做什麼的,它是'this'的jquery包裝版本......你會怎麼稱呼它?因爲jQuery對象的'$ var'是一個廣泛使用的約定?對於#3,你建議什麼替代品?有幾個圖書館選擇了這個(jQuery,MooTools,Prototype,Microsoft的....)。 – 2010-10-08 10:19:46

1

在jQuery的上下文中,'this'是調用方法的對象。 '$ this'確實是一個沒有特殊含義的變量名稱不多的變量。 '$(this)'將'this'傳遞給jQuery,只要'this'是一個DOM對象,jQuery就會返回一個與'this'關聯的jQuery對象。

0

您的問題會更好地服務於更多的上下文。

但是我假設你在元素事件回調的上下文中詢問變量(例如click)。

  • this是處理程序的上下文中(通常的DOM元素,在DOM事件處理程序的情況下)
  • $this通常用來存儲$(this)
  • $(this)結果返回jQuery對象那包裝this - 請參閱jQuery documentation瞭解更多信息。
0

擴大在什麼大衛說:

  • $this通常用於有this對象的副本在當前範圍內。例如對於var $this = this;,您可以在當前範圍內的任意位置使用變量$this,並始終能夠引用該對象,否則該對象只會簡單地用this引用。我個人不喜歡的$this命名規則,更喜歡像var parentScope

  • $(this)是像jQuery或PrototypeJs一些框架使用的功能(var $ = function(){})。使用它的原因是因爲$是很容易的類型,而不是someLongFunctionName因爲它是在代碼通常被稱爲許多時候,它更容易有它是儘可能短

9

在jQuery的事件處理:

  • this - 是您分配事件處理程序
  • $(this) DOM元素 - 距離Tha創建一個jQuery對象噸元件
  • $this - 典型地,可變保持的$(this)

結果更一般地:

  • 函數內部是指物體或基元的函數被調用上。當一個函數被用作構造函數時,它指向正在構建的新對象。在任何函數之外,this引用全局對象(window處於非嚴格模式)。

    您可以找到good detailed explanation on MDN

  • $ this是一個變量名稱。在JavaScript中,變量名稱可以以$開頭。有些人喜歡用它作爲前綴變量包含jQuery的對象:

    var body = document.body; // no prefix for a plain DOM object 
    var $body = jQuery('body'); // prefix for the same object wrapped in jQuery 
    var $this = $(this); 
    
  • $(本)是一個函數調用,其中$是一個函數名,this是它的參數:

    var $ = alert; 
    $(this); // [object Window] 
    

    $本身沒有任何特殊的含義。但jQuery將$()函數定義爲jQuery()的簡寫。根據它的參數,這個函數可以做many different things

相關問題