0

在我之前的问题中,一位海报提出了以下建议:

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 吗?

4

9 回答 9

2

在 jQuery 中,$(something)只是一个简写,jQuery(something)但由于jQuery重复输入很乏味,$所以使用。

在 JavaScript 中可以使用标识符。所以你可以拥有ca$h = 100,这和cash = 100. 通常,您应该避免使用此类变量名称。

jQuery 也可以坚持使用j(something)$(something)但我想当时$它足够独特,不会与任何其他现有函数或变量名冲突。我见过一些其他的 JavaScript 库同时$用于$$不同的事情。

于 2012-05-04T07:27:30.847 回答
1

这个问题有两个部分。

第一:var使$form成为具有局部范围的变量。如果你省略它并写

$form = "foo";

那么就好像你写过

this.$form = "foo";

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

第二:var $form = form简单地$form复制form——不是很有用。但

var $form = $(form)

成为$form一个jQuery包装器form——这又完全是另一回事,因为这意味着你现在可以在$form.

于 2012-05-04T07:18:36.190 回答
1

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

这和写作一样jQuery(form)

于 2012-05-04T07:19:23.970 回答
1

不,你不能。$()使您能够在 DOM 元素上使用 jQuery 的方法。如果你写了$form = form,你就不能在你的元素上调用.valid()and 。.data()$form

于 2012-05-04T07:19:54.717 回答
1

不,$()是 jQuery 对象。在 JavaScript 中,您不需要使用$before 变量,但在 PHP 中您需要使用...一些程序员习惯于使用以 a 开头的变量,$因此为了自身的一致性,他们$在 PHP 和 JavaScript 中都使用 a 来保持统一和减少混乱为他们。但是,您可以像这样编写该示例:

var form = $(form);
于 2012-05-04T07:20:20.900 回答
1

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

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

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

于 2012-05-04T07:23:36.110 回答
1

重要的是你明白 $(form) 和 jQuery(form) 是一样的。

像这样在 Javascript 中构造变量 - jQuery('#myThing') 或 $('#myThing') 是一样的。

一旦你理解了这一点,就向前迈出一步:

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

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

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

顺便说一句,再向前一步:编写 $(form) 会生成一个 jQuery var,与 jQuery(form) 相同,但在某些情况下,使用某些库会在使用 $ 而不是 jQuery 时出现冲突。这就是为什么我开始定期使用 jQuery 而不是 $ 的原因。

希望这可以帮助!

于 2012-05-04T07:48:10.240 回答
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属性有何不同。

于 2012-05-04T07:20:45.903 回答
0

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

于 2012-05-04T07:22:16.513 回答