为什么我的javascript中有$?

时间:2012-06-20 09:00:08

标签: javascript jquery

我有以下内容:

var doHandler = function (link, form, close) {
    var $form = form;
    var $link = link;
    var dialogTitle = $form.find("#Title").val();
    // some code
}

我想将其更改为:

function doTask(??) {
  var dialogTitle = $form.find("#Title").val();
  // some code
}
var doHandler = function (link, form, close) {
    var $form = form;
    var $link = link;
    doTask(??)
}

有人可以解释一下:

  • 什么是“var $ form = form;”正在做
  • 我应该将什么参数传递给doTask $ form或form?
  • doTask中的第一行应该引用$ form或form
  • 我是否需要在调用之前声明该函数,如果它在同一个文件中?

很抱歉,但是真正令人困惑的是有什么区别以及为什么$

7 个答案:

答案 0 :(得分:4)

这是命名标准,用于声明 jQuery对象

因此,通过指定 $ ,您现在可以让变量保存jQuery选择器的结果。

以下是如何简化流程的简单示例:

http://jsfiddle.net/YYNeA/16/

答案 1 :(得分:4)

分配$form = form似乎对您发布的代码无效,但这取决于// some code的作用。

使用$为变量名添加前缀的约定用于表示该变量包含jQuery对象。

如果代码改为

var $form = $(form);

然后这将解释所有内容:$form是一个包装form的jQuery对象(可能是一个普通的DOM元素)。

对于您的其他问题:

  • 你应该通过doTask完成工作所需的任何参数
  • 如果doTask在源代码中doHandler之前,则无关紧要

答案 2 :(得分:1)

var $form = form;
    var $link = link;

这些是定义的变量。你可以声明包含$的varibale。

$ form是一个变量对象。如果你想把它作为jquery对象。用jquery环绕。

例如:$(form) //现在这是jquery对象

答案 3 :(得分:1)

变量名中的$没什么特别之处,可以用于任何变量。

但是,正如@Jon指出的那样,使用$作为前缀的一般约定是声明一个jQuery对象。

答案 4 :(得分:0)

$字符只是定义变量时可以使用的有效字符。

当对象本身是jQuery对象时,我通常使用附加到变量的$字符。除此之外,它没有附加任何附加信息。

答案 5 :(得分:0)

var $form表示您声明了变量名$form

var $form = form表示您将表单值分配给变量$ form

与$ link相同

答案 6 :(得分:0)

字符$可以在变量名中使用,就像任何其他有效字符一样,包含$的变量名在语言中没有特殊含义。

由于表单和链接的变量是局部变量,您必须将它们传递给函数才能使用它们。

不必在使用它的代码之上定义函数,只要它在相同(或以前的)文件或相同(或以前的)脚本块中。

doTask函数中,既不使用变量form也不使用变量$form,因为它们都是doHandler函数的本地变量。您使用发送到该函数的参数。此参数也可以命名为form$form,但它也可以命名为完全不同的名称。

var doHandler = function (link, form, close) {
  var $form = form;
  var $link = link;
  doTask($form, $link);
};

function doTask(someForm, someLink) {
  var dialogTitle = someForm.find("#Title").val();
  // some code
}

将参数linkform复制到局部变量$link$form似乎毫无意义。你也可以使用参数:

var doHandler = function (link, form, close) {
  doTask(form, link);
};

function doTask(someForm, someLink) {
  var dialogTitle = someForm.find("#Title").val();
  // some code
}