仍然混淆javascript / jquery中变量之前的$

时间:2012-05-04 07:16:48

标签: javascript jquery

在我之前的question中,海报建议如下:

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

我现在明白$ before用于显示变量是一个jQuery对象。我的问题是为什么我需要“var $ form = $(form)”这一行?我不能只有$ form = form吗?

9 个答案:

答案 0 :(得分:2)

在jQuery中,$(something)只是jQuery(something)的简写,但由于重复输入jQuery很繁琐,因此会使用$

在JavaScript中可以使用标识符。所以你可以拥有ca$h = 100,这和cash = 100一样好。但一般来说,你应该避免使用这些变量名。

jQuery也可以坚持j(something)而不是$(something),但我想当时$足够独特,不会与任何其他现有功能或变量发生冲突名。我看到其他一些JavaScript库同时用于$$$

答案 1 :(得分:1)

这个问题分为两部分。

首先:var使$form成为具有局部范围的变量。如果省略并写下

$form = "foo";

那就好像你写了

this.$form = "foo";

这是完全不同的东西。如果没有代码弄乱函数中的this,默认情况下this将等于window,您将设置一个全局变量。

第二:var $form = form只是让$form成为form的副本 - 不是很有用。但

var $form = $(form)

使$form成为{{1>}周围的 jQuery包装器 - 这又是另一回事,因为它意味着您现在可以在{{1}上调用jQuery方法}}

答案 2 :(得分:1)

$与jQuery相同。这基本上确保'form'变量是一个jQuery对象而不是一个普通的dom对象。

与撰写jQuery(form)

相同

答案 3 :(得分:1)

不,你不能。 $()使您能够在DOM元素上使用jQuery的方法。如果您已撰写$form = form,则无法在.valid()元素上致电.data()$form

答案 4 :(得分:1)

不,$()是jQuery对象。在JavaScript中,你不需要在变量之前使用$但在PHP中你需要...一些程序员习惯使用以$开头的变量,所以为了自己的一致性,他们使用{$ PHP和JavaScript中的1}}可以保持统一,减少对它们的混淆。你可以写这样的例子:

var form = $(form);

答案 5 :(得分:1)

你可以,但那意味着你希望你的表单参数支持.valid()和.data(),我想这不是你想要的。

通过思考var $myvar=$(myvar) 你正在使用jquery添加的所有技能来增强myvar 比如询问.width()或.height()等等 并允许自己发送选择器而不是实际对象。

所以你的formSubmitHandler函数可以这样调用: formSubmitHandler(link,'.classname_of_form') 要么 formSubmitHandler(link,'#id_of_form') 等等。

答案 6 :(得分:1)

重要的是你明白$(form)与jQuery(form)相同。

在Javascript中构造一个变量--jQuery('#myThing')或$('#myThing'),然后是相同的。

一旦你理解了这一点,就要领先一步:

程序员有一些他们喜欢称之为“标准”的东西,只是为了让代码更容易阅读。并且为了这个,传统的方式来向读者展示一个变量包含一个jQuery变量,而不仅仅是一个普通的Javascript变量,你把$放在前面。

所以你有$ form = jQuery(form);或者同样的事情,$ form = $(表格)。

约定可能会有所不同,比方说,IAMJQUERYTHING!_form而不是$ form,但这是它接受的方式:)

顺便提前迈出一步: 编写$(form)创建一个jQuery var,与jQuery(form)相同,但在某些情况下使用某些库会在使用$而不是jQuery时出现冲突。这就是我开始使用jQuery而不是定期使用$的原因。

希望这有帮助!

答案 7 :(得分:0)

form是dom元素,$form是一个选择所述dom元素的jQuery对象。 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属性的不同。

答案 8 :(得分:0)

添加美元符号并不会使其成为jQuery变量。调用$()返回一个jQuery对象。因此,如果您使用美元符号命名常规HTML元素,则其他开发人员希望能够调用form.show(),但这会引发错误,因为普通表单元素没有show方法