2017-06-13 15 views
1

當我這樣做:

var x = $("#listing") 

我找回ID爲listing html元素,

當我做$(x)$($("#listing")),我也一樣。

b/w兩者有什麼不同?

+3

'$(...)'將對象轉換爲** jQuery對象/集合**。在執行'$(x)'時,您只需從'x'創建一個新的jQuery對象,它本身就是一個jQuery對象 - 它是多餘的,沒有任何用處。然而,'$ var'和'var'沒有區別,這只是大多數開發人員用來區分jQuery對象和本機JS對象/變量的命名約定。 – Terry

+0

這只是JQuery根據你給他的元素重新創建選擇器。 –

回答

3

$()將東西轉化爲jQuery object(或集合)。這與Javascript變量不同。

當存儲#listing在諸如var x = '#listing'變量,你只是傳遞一個字符串到jQuery的構造函數,然後由Sizzle,jQuery的選擇器引擎解釋爲一個選擇。

在所提供的示例中,存在以下兩個線之間無差異:

var x = $('#listing'); 

var x = '#listing', 
    $x = $(x); 

在第一代碼段,x相同$x在第二位。

爲了完整性,jQuery構造函數也可以接受混合類型變量作爲其第一個參數;它不一定是一個字符串。例如,它可以在一DOMElement變量轉換成使用以下語法jQuery對象:

var ele = document.getElementById('myItem'), 
    $ele = $(ele); 

注意$ele現在已經進入jQuery的自己的功能,如addClass()等請參閱this demo


此外,將jQuery對象傳遞給構造函數將簡單地返回相同的jQuery對象。例如,給定下面的代碼片斷:

var $x = $('#listing'), 
    $x2 = $($x); 

$x相同$x2

+0

如果我們在這裏放$(x),我的意思是用$來包裝jquery元素,我知道它沒有意義,但只是好奇,會發生什麼? – maverick

+0

@sahil控制檯登錄並檢查你看到的內容。當你自己做時,有時候更容易理解事情。 – Terry

+0

@sahil你的意思是'$($ x)'? '$(x)'將產生與$('#listing')'相同的解釋。 – BenM

0

一旦找到宿舍項目,你的x變量就成爲jQuery對象。一旦你運行了var x = $('#listing'); x擁有一切包裝它。

因此,你可以運行x.addClass( '東西')

+0

這不完全正確。'x'變量不是*製作成一個jQuery對象,而是用來構造一個新的。 – BenM

0

添加$是創建jQuery對象,它不是正常的變量。您可以從DOM元素,另一個jQuery對象或正常的javascript變量創建jQuery對象。嘗試運行console.log(x)console.log($(x))它會告訴你所有的差異。