jQuery对象作为元素

时间:2013-02-15 07:13:33

标签: javascript jquery

我在一些高级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 个答案:

答案 0 :(得分:5)

这不是一些简写,这只是使用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”属性设置为某些内容。

答案 1 :(得分:1)

这只是为了表明,$container变量已经是一个包装的jQuery对象,而不是例如本机DOM节点。

例如,你可以写:

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

明白了吗?

答案 2 :(得分: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对象的提醒而完成的。

答案 3 :(得分:0)

没有使用jQuery的快捷方法。

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

即$ container = $(“#container”);

$ container是一个jquery对象。

理解:$表示它是jquery对象,因此适当时对其应用操作。