2012-05-04 83 views
0

變量在我以前的question海報前的建議如下:

var formSubmitHandler = function (link, form) { 
    var $form = $(form); 
    var val = $form.valid(); 
    var action = $form.data('action'); 
    var entity = $form.data('entity'); 

我現在明白了,之前的$被用來顯示變量是一個jQuery對象。我的問題是爲什麼我需要「var $ form = $(form)」這一行?我可以不只是$ form = form嗎?

+2

'var $ form = $(form)'等價於'var $ form = jQuery(form)'。您正將'form'傳遞給jQuery *函數*以獲取jQuery對象。在這種情況下,'$'是指一個函數。當然,如果'form'已經是一個jQuery對象,那麼你不必再次傳遞它。但是我們不知道你傳遞給'formSubmitHandler'。 –

+0

我通過formSubmitHandler(link,$('#main-form')); –

+0

那你就不需要它了。你可以將你的函數定義爲'var formSubmitHandler = function(link,$ form){'如果你想把這個名字命名爲'$ form'。 –

回答

1

form是的DOM元素,$form是一個jQuery對象選擇說DOM元素。 jQuery具有可以執行的很酷的功能,dom元素具有不同的函數和屬性。考慮這個完全不相關的例子:

HTML:

<div id="#someid">hi</div> 

的javascript:

var $someid = $("#someid"); 
var someid = document.getElementById("someid"); 
var content = $someid.html(); // returns 'hi' 
var content2 = someid.innerHTML; // returns 'hi' 

注意jQuery的.html()功能是如何比DOM .innerHTML性質不同。

2

這個問題有兩個部分。

第一:var使得$form是對本地範圍的變量。如果你忽略它,寫

$form = "foo"; 

然後就好像你寫

this.$form = "foo"; 

這是完全不同的東西。如果沒有代碼瞎搞什麼this是裏面的功能,默認情況下this就等於window,你會設置一個全局變量。

第二:var $form = form只是使$formform的副本 - 不是很有用。但

var $form = $(form) 

使得$formjQuery的包裝器無論form是 - 這又是另一回事完全是因爲它意味着你現在可以調用$form jQuery方法。

2

$是一樣的jQuery。這基本上確保'form'變量是一個jQuery對象,而不是一個普通的dom對象。

這是一樣的書寫jQuery(form)

2

不,你不能。 $()使您能夠在DOM元素上使用jQuery的方法。如果你寫了$form = form,你不會已經能夠調用.valid().data()$form元素。

2

沒有,$()是jQuery對象。在JavaScript中,你不需要變量之前但是在PHP你使用$ ...有些程序員使用,以使用與$啓動變量,以便爲自己的一致性,他們在這兩個PHP使用$和JavaScript來讓事情變得均勻對他們來說不那麼困惑。你可以寫一個例子是這樣但是:

var form = $(form); 
+1

+1,但也要記住,如果你在你的'form'之前添加$,這是一個很好的習慣,所以你知道有一個jQuery對象被賦值,而不是一個正常的Javascript對象。 –

1

只需添加美元符號不會使其成爲jQuery變量。調用$()會返回一個jQuery對象。因此,如果您使用美元符號命名常規HTML元素,則其他開發人員可能希望能夠調用form.show(),但這會引發錯誤,因爲普通表單元素沒有show方法

2

您可以但那麼這意味着你期望你的表單參數是支持.valid()和.data()的東西,我猜不是你想要的。

通過打算以爲var $myvar=$(myvar) 您正在加強MYVAR所有的jQuery 添加喜歡問.WIDTH()或.height(),更 並讓你的選擇,而不是實際對象的發送能力。

所以你formSubmitHandler函數可以這樣調用: formSubmitHandler(link,'.classname_of_form')formSubmitHandler(link,'#id_of_form') 等。

3

在jQuery中,$(something)只是jQuery(something)的簡寫,但由於重複輸入jQuery很繁瑣,因此使用$

在JavaScript中可以使用標識符。所以你可以有ca$h = 100,那就是cash = 100。一般來說,你應該避免這樣的變量名稱。

jQuery的也可以同樣一直堅持着j(something)而不是$(something)但我當時$猜測是足夠獨特的,它不會與任何其他現有的函數或變量名衝突。我已經看到一些其他JavaScript庫用於$$$用於不同的事情。

1

重要的是你明白$(表單)和jQuery(表單)是一樣的。

用Javascript構建一個變量 - jQuery('#myThing')或者$('#myThing')是相同的。

一旦你明白,領先一步:

程序員有他們喜歡叫「標準」,只是爲了讓代碼更易於閱讀的東西。爲此,傳統的方式向讀者展示一個變量包含一個jQuery變量,而不僅僅是一個普通的Javascript變量,你在前面放一個$。

所以你有$ form = jQuery(form);或者相同的東西,$ form = $(form)。

約定可能會有所不同,比方說,IAMJQUERYTHING!_form改爲$ form,但這就是它的接受方式:)

前面的另一個步驟,順便說一下: 編寫$(form)使jQuery var與jQuery(form)相同,但在某些情況下使用某些庫當使用$而不是jQuery時會出現衝突。這就是爲什麼我開始定期使用jQuery而不是$。

希望這會有所幫助!