我正在阅读有关编写新的jquery插件的文档,但是当看到该代码时,我很沮丧:
$.fn.greenify = function() {
this.css( "color", "green" );
};
$( "a" ).greenify();
创建一个新的greenify函数添加到jquery。我真的不明白为什么不使用$(this)而不是这个。拜托,有人帮我理解这个吗?谢谢你的帮助!
答案 0 :(得分:1)
在这种情况下,this
指的是应用插件的 jQuery对象。它有一个原型,所有jQuery方法都可以由你的元素继承(比如css
)。
你可以通过
轻松证明这一点$.fn.greenify = function() {
console.log(this); // you will see a jQuery object in the console
this.css( "color", "green" );
};
由于它已经是一个jQuery对象,因此无需在$()中对其进行双重包装。但是,$(this)
也可以使用,但不是必需的。
答案 1 :(得分:0)
您需要使用$(this)
将this
对象更改为jQuery对象。在您的情况下,this
将包含正在“绿化”的<a>
元素,但仅包含DOM元素。由于DOM元素没有像jQuery内置的那些方法(例如.css()
),因此您首先需要将其更改为jQuery对象,以便能够像这样使用它。