我在一些高级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');
有人可以让我知道有什么区别,什么时候适合或适用于'速记'风格?
答案 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对象,因此适当时对其应用操作。