为了账号安全,请及时绑定邮箱和手机立即绑定

$("li").css('')和$("li").each有什么区别吗?

$("li").css('')

$("li").each(function (index,element) { $(this).css('');  })

有什么区别吗?

下面这样写为什么只改变了第一个li的样式,each相当于for循环那不应该三个都变吗

$("li").each(function (index,element) {
   $(this).eq(index).css('background','red');
})


正在回答

5 回答

至于你说的为什么只改变了第一个,this是指向当前的这一个li,所以$(this).eq(index)每一次操作的时候是对一个元素的操作,index=0时,第一个就相当于 第一个li.eq(0) 所以取了,但是index=1之后,eq(1),eq(2)取第二个第三个元素对吧,但是$(this)每次只有一个,所以不可能取到。 你alert($(this).eq(index))可以看到的。

5 回复 有任何疑惑可以回复我~
#1

apianmuse 提问者

非常感谢!
2018-01-16 回复 有任何疑惑可以回复我~

    这个的区别就是$("li").css("需要添加的样式")相当于$("li").each(function(){ $(this).css(需要添加的样式) }),

只不过.css()方法已经把后面我写的each()以及回调函数给封装起来了,你看不见,你只需要给它“需要添加的样式”这个参数就行了,这也是面对对象的概念,注重做什么,不关注怎么做的,这里讲each()是因为,each()方法我们平时迭代也可以用的到

0 回复 有任何疑惑可以回复我~

$("li").css('')和$("li").each的区别:通过$()方法找到指定的元素合集后可以进行一系列的操作。比如我们操作$("li").css('') 给所有的li设置style值,因为jQuery是一个合集对象,所以[css方法内部就必须封装一个遍历的方法],被称为隐式迭代的过程。要一个一个给合集中每一个li设置颜色,这里方法就是[each],学each()方法是给你一个遍历的jq方法方便自己定义fun,css()里面已经封装了。

1 回复 有任何疑惑可以回复我~

你这种写法我转换下:

for(index=0;index<3;index++)

{

li[index].eq(index)

}

这个li[index]本身就只有一个元素,下表为0的时候取到本身,下标大于0之后没有取得呢。

望采纳,一起学习。

5 回复 有任何疑惑可以回复我~

 $(this).eq(index).css('background','red'); 问题出在eq(index)上,因为外面用了each,所以你这里的$(this)就相当于已经遍历过了,这里的$(this)就已经起到了你加eq()想让他遍历的愿望。

3 回复 有任何疑惑可以回复我~
#1

apianmuse 提问者

each()可以在遍历的过程中进行选择,而css只能给全部设置。我这样理解对不对
2018-01-16 回复 有任何疑惑可以回复我~
#2

_Rainy 回复 apianmuse 提问者

是的 each可以痛下fun设置
2018-01-16 回复 有任何疑惑可以回复我~
#3

apianmuse 提问者 回复 _Rainy

非常感谢!
2018-01-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

$("li").css('')和$("li").each有什么区别吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信