我想知道为什么在这么多jquery插件中$(this)设置为指向$ this,这是一个例子,如果我在页面上包含以下两个插件:
(function($) {
jQuery.fn.pluginOne = function() {
return this.each(function() {
$this = $(this); <--
alert($this);
});
};
})(jQuery)
(function($) {
jQuery.fn.pluginTwo = function() {
return this.each(function() {
$this = $(this); <--
alert($this);
});
};
})(jQuery)
当我在dom上调用两个插件时:
$(document).ready({
$('.myClass').pluginOne();
$('.myOtherClass').pluginTwo();
});
第一个插件将从第二个插件获得$ this ...而我将$(this)指向本地var:
(function($) {
jQuery.fn.pluginTwo = function() {
return this.each(function() {
var trigger = $(this); <--
alert(trigger);
});
};
})(jQuery)
当然,一切都有效......
所以我的问题是......我什么时候应该使用$ this?
由于
答案 0 :(得分:12)
$这是人们用来在变量中缓存实际jQuery对象$(this)的标准。
您可以按照自己的意愿调用它,有些人喜欢将其称为$ self。
e.g
var $self = $(this)
当您查看代码以识别它是jQuery对象而不是普通的dom对象时,它会有所帮助。
由于您只创建了一个jQuery变量实例,因此效果更好。
答案 1 :(得分:9)
$
是Javascript中变量和函数名称的合法字符。如果您来自PHP,$
仅用于表示变量(花了一些时间才能实现),那可能会让您感到困惑。
在jQuery中,$
是函数jQuery
的别名,它是处理DOM选择的主要函数。 $("#header ul.menu")
与jQuery("#header ul.menu")
相同。 $
仅用于简洁。
this
是Javascript中的特殊术语(不是jQ),表示当前元素(例如,您可能会看到this.submit()
形式的表单)。
$(this)
表示“使用Javascript的jQuery
”调用this
函数。
$this
只是一个变量,因为$
是一个有效字符。您可以将$this
设置为您喜欢的任何值,它与Javascript的this
完全无关。一般来说,我建议不要使用$作为变量名,以避免与jQuery函数混淆。但是,使用$var
表示jQuery对象而不是普通的Javascript变量可能很有用。
答案 2 :(得分:2)
如果使用包装在jQuery对象中的元素执行许多不同的命令,那么将元素(作为包装集)仅获取一次并将其存储在局部变量中更为高效
var $this = $(this);
// then use $this in your function.
请注意var
用于本地范围$this