1

我在一些高级 jQuery 中看到了这种语法:

$container

如:

$input = $container.find('.fn_this_timeline')

编辑:根据下面的一些评论,只是为了澄清我可以看到的第一个'$container'实例是在开始时创建的:

init: function($container){
var myThing = this,
$input = $container.find('.fn_do_some_calc'),
$submit = $container.find('.fn_do_some_other_calc'),
defaultValue = parseInt($input.val(), 10);

myThing.$container = $container;

上面的行让我更加困惑:/

我习惯使用这样的 jQuery 选择器: $('#mySelector').method('etc');

有人可以让我知道有什么区别以及何时适合或适用于使用“速记”风格吗?

4

4 回答 4

6

这不是一些速记,这只是 Javascript 变量的使用。例如,$container变量可能是这样声明的:

var $container = $("#container");

因为它是存储的,所以元素(jQuery 对象)是“缓存的”并且可以被重用,而无需让 jQuery 出去并重新遍历 DOM 以再次找到它(因为它必须每次$("select")使用)。

在变量名的开头使用$有时有助于开发人员记住它包含一个 jQuery 对象而不是 Javascript 元素(例如从document.getElementById("container");.

根据您的问题init方法所在的位置,该行myThing.$container = $container;只是将对象的属性“$container”设置为$container变量的值。所以对象可能是这样的:

var myObject = {
    init: function () {
        // blah blah blah
    },

    $container: undefined
};

运行该init方法后,它会将“$container”属性设置为某个值。

于 2013-02-15T07:16:08.103 回答
1

这只是为了说明,该$container变量已经是一个包装好的 jQuery 对象,而不是一个原生 DOM 节点。

例如,您可以编写:

var container  = document.getElementById('item');
var $container = jQuery(container); // or:
var $container = jQuery('#item');

明白了吗?

于 2013-02-15T07:16:13.027 回答
1

基本上,是的,它是简写。

对于您提到的功能:

init: function($container){
var myThing = this,
$input = $container.find('.fn_do_some_calc'),
$submit = $container.find('.fn_do_some_other_calc'),
defaultValue = parseInt($input.val(), 10);

$ 包含在内,因此您知道将 jQuery 对象传递给函数。因此,当您调用它时,您可能会执行以下操作:

init($('#theid'));

至于下面的行:

myThing.$container = $container;

这只是将您的 jQuery 对象存储为 myThing 对象的一部分。另一个注意事项,你可以做类似的事情$var = 1,这将是完全有效的。然而,通常它是作为存储 jQuery 对象的提醒。

于 2013-02-15T07:29:30.230 回答
0

没有使用 jQuery 的捷径。

在 jQuery 中声明变量是标准方法。

即 $container = $("#container");

$container 是一个 jquery 对象。

理解:$表示它是jquery对象,所以适当地对其进行操作。

于 2013-02-15T07:21:43.660 回答