0

我有以下内容:

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
  • 如果函数在同一个文件中,我需要在调用之前声明函数吗?

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

4

7 回答 7

4

这是声明jQuery 对象的命名标准

因此,通过分配一个$你让它现在变量将保存例如 jQuery 选择器的结果。

这是一个如何简化流程的简单示例:

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

于 2012-06-20T09:02:07.117 回答
4

从您发布的代码中,分配$form = form似乎没有做任何事情,但这取决于做什么// some code

变量名前缀的约定$用于表示该变量包含一个 jQuery 对象。

如果代码改为阅读

var $form = $(form);

那么这将解释一切:$form是一个包装的 jQuery 对象form(大概是一个普通的 DOM 元素)。

对于您的其他问题:

  • 您应该传递doTask完成工作所需的任何参数
  • 源中是否doTask在前面都没有关系doHandler
于 2012-06-20T09:02:07.167 回答
1
var $form = form;
    var $link = link;

这些是定义的变量。您可以声明其中包含 $ 的变量。

$form 是一个变量对象。如果你想让它作为 jquery 对象。用jquery包围。

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

于 2012-06-20T09:01:46.180 回答
1

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

但是,正如@Jon所指出的,前缀 with 的一般约定$是声明一个 jQuery 对象。

于 2012-06-20T09:03:31.373 回答
0

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

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

于 2012-06-20T09:02:45.170 回答
0

var $form表示您正在声明一个变量名$form

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

和你的 $link 一样

于 2012-06-20T09:04:10.303 回答
0

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

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

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

doTask函数中,您既不使用 variableform也不使用 variable $form,因为它们都是doHandler函数的局部变量。您使用发送到函数的参数。此参数也可以命名为formor $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
}

link不过,将参数和复制form到局部变量$link和似乎毫无意义$form。您也可以使用以下参数:

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

function doTask(someForm, someLink) {
  var dialogTitle = someForm.find("#Title").val();
  // some code
}
于 2012-06-20T09:07:50.497 回答