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

来源:6-10 jQuery遍历之each()

apianmuse

2018-01-15 15:26

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

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

有什么区别吗?

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

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


写回答 关注

5回答

  • _Rainy
    2018-01-15 20:51:20
    已采纳

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

    apianm...

    非常感谢!

    2018-01-16 14:52:20

    共 1 条回复 >

  • GitCodeFarmer
    2018-02-24 18:00:44

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

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

  • _Rainy
    2018-01-15 20:58:38

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

  • _Rainy
    2018-01-15 20:53:43

    你这种写法我转换下:

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

    {

    li[index].eq(index)

    }

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

    望采纳,一起学习。

  • _Rainy
    2018-01-15 20:45:06

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

    apianm... 回复_Rainy

    非常感谢!

    2018-01-17 09:26:54

    共 3 条回复 >

jQuery基础(二)—DOM篇

jQuery第二阶段开启DOM修炼,了解创建、插入、删除与替换

114012 学习 · 590 问题

查看课程

相似问题