2012-05-04 43 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而不是$。

希望这会有所帮助!