将节点修改为ul为什么只有第二个框里的字变蓝色了

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

江励志

2016-08-25 11:22

 $("button:last").click(function() {

        //遍历所有的li

        //修改偶数li内的字体颜色

        $("ul").each(function(index, element) {

            if (index%2) {

                $(this).css('color','blue')

            }

        })

    })

黑色的地方是修改的节点。

点击回调按钮后只有第二个框变蓝

http://img.mukewang.com/57be642c0001034e03550244.jpg

而且修改之后,先点击each()方法遍历li元素让所有li里的字变红,再点击回调按钮后,字体无法变蓝

http://img.mukewang.com/57be64700001ee4303570246.jpg



写回答 关注

2回答

  • 雨宮奏
    2016-08-25 15:26:03
    已采纳

    首先第一个问题, if(index%2)=if(true),因为index%2 = 1嘛。

    所以当你把节点换成ul后,只有1%2=1为真,所以其他都是false,就只有第2个ul有效果了。

    注:索引是从0开始。

    第二个问题,因为此时里面this的指向是ul了,而ul下又没其他文本内容,当然就看不出效果了。

    江励志

    非常感谢!

    2016-08-27 10:27:43

    共 1 条回复 >

  • 一止水
    2016-08-25 12:01:29

    <script type="text/javascript">
        $("button:last").click(function() {
            //遍历所有的li
            //修改偶数li内的字体颜色
            $("ul").each(function(index, element) {
                if (index % 2) {
                    $(this).css('color','blue')
                }
            })
        })
        </script>

jQuery基础(二)—DOM篇

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

114014 学习 · 590 问题

查看课程

相似问题