Javascript css(“颜色”、“绿色”);(而不是$(这个))--它为什么有效?

Javascript css(“颜色”、“绿色”);(而不是$(这个))--它为什么有效?,javascript,jquery,dom,Javascript,Jquery,Dom,我对这个和$(这个)之间的区别感到困惑。通过调查,我发现这对我来说已经有一段时间了,但后来我遇到了以下问题: 本教程解释道:“请注意,要使用另一种方法.css(),我们使用的是this,而不是$(this)。这是因为我们的greenify函数与.css()是同一对象的一部分。” 不幸的是,我并不完全明白。我不明白如何在DOM对象上使用JQuery方法,而不是在该DOM对象的JQuery包装器上使用JQuery方法。任何人的任何解释都会很有帮助 澄清:我感兴趣的不是this和$(this)之间的区

我对这个和$(这个)之间的区别感到困惑。通过调查,我发现这对我来说已经有一段时间了,但后来我遇到了以下问题:

本教程解释道:“请注意,要使用另一种方法.css(),我们使用的是this,而不是$(this)。这是因为我们的greenify函数与.css()是同一对象的一部分。”

不幸的是,我并不完全明白。我不明白如何在DOM对象上使用JQuery方法,而不是在该DOM对象的JQuery包装器上使用JQuery方法。任何人的任何解释都会很有帮助

澄清:我感兴趣的不是this和$(this)之间的区别——我知道前者属于JavaScript,并且(粗略地说)是指全局对象、包含对象或调用DOm元素,具体取决于具体情况,而后者(同样,一般来说)指正在对其执行操作的JQuery包装元素。我感兴趣的是为什么这个.css()可以在上面的上下文中工作


我投票的回答(抱歉,我在编辑屏幕上看不到回答者的名字)很好地解决了这个问题,尽管为了收集更多的观点,我暂且不接受这个回答。

这个
在jQuery插件的范围内是jQuery对象集合,而不是DOM节点,因此可以访问jQuery方法

但是,您应该使用
each()
迭代该jQuery对象/集合,例如:

$.fn.greenify = function() {
    this.each(function(){
        this.css('color', 'green';
    });
    return this;
}
这是我们迭代的集合中元素的DOM节点,因此会导致语法错误,需要使用jQuery显式包装:

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

这个
在jQuery插件的范围内是jQuery对象集合,而不是DOM节点,因此可以访问jQuery方法

但是,您应该使用
each()
迭代该jQuery对象/集合,例如:

$.fn.greenify = function() {
    this.each(function(){
        this.css('color', 'green';
    });
    return this;
}
这是我们迭代的集合中元素的DOM节点,因此会导致语法错误,需要使用jQuery显式包装:

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

将函数添加到
$。fn
就是将函数添加到jQuery原型对象。(这就是
$.fn
是什么-每个jQuery实例对象共享的原型对象。)

当您从某个JavaScript代码调用类似
.greenify()
的函数时,正常的JavaScript函数调用规则就会发挥作用。与任何其他原型对象上的函数一样,
.greenify()
或任何其他jQuery函数的代码中的
this
的值将是
运算符前面的表达式引用的对象。语句中的对象是什么

$(".foo").greenify();

??这是一个jQuery对象

$添加函数。fn
就是向jQuery原型对象添加函数。(这就是
$.fn
是什么-每个jQuery实例对象共享的原型对象。)

当您从某个JavaScript代码调用类似
.greenify()
的函数时,正常的JavaScript函数调用规则就会发挥作用。与任何其他原型对象上的函数一样,
.greenify()
或任何其他jQuery函数的代码中的
this
的值将是
运算符前面的表达式引用的对象。语句中的对象是什么

$(".foo").greenify();

??这是一个jQuery对象

…没关系。我的诵读困难症患者看到的是“你应该”而不是“应该”。没问题,尽管我正要问我是否需要进一步澄清我尝试的例证。。。没有关系。我的诵读困难症患者看到的是“你应该”而不是“应该”。没问题,尽管我正要问我是否需要进一步澄清我尝试的例证