问答详情
源自:6-10 jQuery遍历之each()

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

 $("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



提问者:江励志 2016-08-25 11:22

个回答

  • 雨宮奏
    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-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>