在我之前的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吗?
答案 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
方法