Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery每个_Javascript_Jquery - Fatal编程技术网

Javascript jQuery每个

Javascript jQuery每个,javascript,jquery,Javascript,Jquery,为什么会出现这样的错误: var slides = $(".promo-slide"); slides.each(function(key, value){ if (key == 1) { this.addClass("first"); } }); UncaughtTypeError:对象#没有方法“addClass” 从上面的代码中?在jQuery回调函数中,这个(在您的示例中也是值)引用的是DOM对象,而不是jQuery对象 Uncaught TypeEr

为什么会出现这样的错误:

var slides = $(".promo-slide");
slides.each(function(key, value){
    if (key == 1) {
        this.addClass("first");
    }
});
UncaughtTypeError:对象#没有方法“addClass”

从上面的代码中?

在jQuery回调函数中,
这个
(在您的示例中也是
)引用的是DOM对象,而不是jQuery对象

Uncaught TypeError: Object #<HTMLDivElement> has no method 'addClass'
但是:在您的情况下,这更容易:

var slides = $(".promo-slide");
slides.each(function(key, value){
    if (key == 0) { // NOTE: the key will start to count from 0, not 1!
        $(this).addClass("first"); // Or $(value).addClass("first");
//------^^----^       
    }
});
另一方面,我发现在包含jQuery对象的变量前面加上
$
前缀是一种有用的约定:

$(".promo-slide:first").addClass("first");

您可能想做:

var $slides = $(".promo-slide");
$slides.each( /* ... */ );

尝试在
$()
中包装
this
,如下:
$(this)
以确保它被视为jQuery对象。虽然可以看出您认为它是的原因,但它实际上与函数范围无关。@t.J.是的,我现在意识到。。。重新标记?可能,并更改标题。几乎只是一个简单的jQuery问题。最佳,1分钟,5次投票===jQuery效果。另外,each循环是基于0的,因此他将类“first”添加到第二个元素。@Orolin:…因为
每个
函数中的
这个
是对原始DOM元素的引用,所以如果要使用jQuery函数,必须为该元素创建一个jQuery实例:@Tomalak,我认为
。每个
都从0开始提供索引,因此您应该在第二个代码片段中执行
$('.promo slide:eq(1))
。@Raynos,@Shrikant:是的,您完全正确。我会解决这个问题。@Raynos:关于“jQuery效应”,我觉得自己有点尴尬。在这个网站上有很多更好、更“昂贵”的答案(就写作所需的时间而言),很难获得投票,而真正显而易见的答案很快就会被采纳。
$(this).addClass