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