當我這樣做:
var x = $("#listing")
我找回ID爲listing
html元素,
當我做$(x)
或$($("#listing"))
,我也一樣。
b/w兩者有什麼不同?
當我這樣做:
var x = $("#listing")
我找回ID爲listing
html元素,
當我做$(x)
或$($("#listing"))
,我也一樣。
b/w兩者有什麼不同?
$()
將東西轉化爲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
。
一旦找到宿舍項目,你的x變量就成爲jQuery對象。一旦你運行了var x = $('#listing'); x擁有一切包裝它。
因此,你可以運行x.addClass( '東西')
這不完全正確。'x'變量不是*製作成一個jQuery對象,而是用來構造一個新的。 – BenM
添加$是創建jQuery對象,它不是正常的變量。您可以從DOM元素,另一個jQuery對象或正常的javascript變量創建jQuery對象。嘗試運行console.log(x)
console.log($(x))
它會告訴你所有的差異。
'$(...)'將對象轉換爲** jQuery對象/集合**。在執行'$(x)'時,您只需從'x'創建一個新的jQuery對象,它本身就是一個jQuery對象 - 它是多餘的,沒有任何用處。然而,'$ var'和'var'沒有區別,這只是大多數開發人員用來區分jQuery對象和本機JS對象/變量的命名約定。 – Terry
這只是JQuery根據你給他的元素重新創建選擇器。 –