jQuery对象作为元素

tim*_*kay 1 javascript jquery

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

$container
Run Code Online (Sandbox Code Playgroud)

如:

$input = $container.find('.fn_this_timeline')
Run Code Online (Sandbox Code Playgroud)

编辑:基于下面的一些评论,只是为了澄清我能看到的'$ 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;
Run Code Online (Sandbox Code Playgroud)

以上这条线让我更加困惑:/

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

有人能告诉我有什么区别,什么时候适合或适用于'速记'风格?

Ian*_*Ian 6

这不是一些简写,这只是使用Javascript变量.例如,$container变量可能是这样声明的:

var $container = $("#container");
Run Code Online (Sandbox Code Playgroud)

因为它是存储的,所以元素(jQuery对象)是"缓存的"并且可以在不使用jQuery的情况下重复使用并重新遍历DOM以再次找到它(因为它必须每次$("select")都使用它).

$在变量名的开头使用有时对开发人员来说有用,因为它记住它拥有一个jQuery对象而不是一个Javascript元素(就像从中返回的那样)document.getElementById("container");.

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

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

    $container: undefined
};
Run Code Online (Sandbox Code Playgroud)

运行该init方法后,它会将"$ container"属性设置为某个东西.