猿问

请教jQuery高手一下!

for (var i = 0; i < $(".testP2").length; i++) {
       $('.testP2').eq(i).addClass('test'+i);
}

遍历类名为“.testP2”的元素,添加不同样式

问题:为什么该代码无效?

GavinZeng
浏览 2478回答 5
5回答

stone310

这一小段代码没问题啊,贴出上下文看下,还有jQ是否成功引入

堂堂堂堂糖糖糖童鞋

这是一个全局变量i最后的值的问题(作用域问题)。遍历之后,i的值为$(".testP2").length,那在通过$('.testP2').eq(i)就无法取得对应的元素,因为不存在$('.testP2').eq($(".testP2").length)的元素。解决方式有两种:for (let i = 0; i < $(".testP2").length; i++) {//ES6块级作用域声明let,兼容性不好        $('.testP2').eq(i).addClass('test'+i); }for (var i = 0; i < $(".testP2").length; i++) {//闭包        (function(i){            $('.testP2').eq(i).addClass('test'+i);        }(i)) }

OlderSkee

不用for  用each

qq_慕沐3137801

$(".testP2").each(function(index){    this.assClass("test"+index)})

杜发明

$(".testP2")这段放到外面定义,要多定义变量,这样代码的可读性才强
随时随地看视频慕课网APP
我要回答