写jquery插件使用此或$(this)

时间:2014-02-09 15:14:29

标签: jquery jquery-plugins

我正在阅读有关编写新的jquery插件的文档,但是当看到该代码时,我很沮丧:

$.fn.greenify = function() {
this.css( "color", "green" );
};

$( "a" ).greenify();

创建一个新的greenify函数添加到jquery。我真的不明白为什么不使用$(this)而不是这个。拜托,有人帮我理解这个吗?谢谢你的帮助!

2 个答案:

答案 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对象,以便能够像这样使用它。