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

li[1].css("color","blue"); // 问题:li是个数组,为什么这里加上[i]会没有效果?换成index也不行,为什么呢?

<!DOCTYPE html>

<html>


<head>

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    <title></title>

    <style>

    .left {

        width: auto;

        height: 150px;

    }

    

    .left div {

        width: 150px;

        height: 120px;

        padding: 5px;

        margin: 5px;

        float: left;

        background: #bbffaa;

        border: 1px solid #ccc;

    }

    </style>

    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>

</head>


<body>

    <h2>each方法</h2>

    <div class="left first-div">

        <div class="div">

            <ul>

                <li>list item 1</li>

                <li>list item 2</li>

                <li>list item 3</li>

            </ul>

        </div>

        <div class="div">

            <ul>

                <li>list item 4</li>

                <li>list item 5</li>

                <li>list item 6</li>

            </ul>

        </div>

    </div>


    <br/>

    <button>点击:each方法遍历元素</button>

    <button>点击:each方法回调判断</button>

    <script type="text/javascript">

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

        //遍历所有的li

        //修改每个li内的字体颜色

        

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

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

        })


    })

    </script>

    <script type="text/javascript">

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

        //遍历所有的li

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

        var li=$("li");

        li.each(function(index,element){

            

            if(index%2){

                li[1].css("color","blue");

            // 问题:li是个数组,为什么这里加上[i]会没有效果?换成index也不行,为什么呢?

            }

        });

        //在javascript中0代表false,非0代表true

        // $("li").each(function(index, element) {

        //     if (index % 2) {

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

        //     }

        // });

    }) 

    </script>

</body>


</html>


正在回答

2 回答

console.log(li[1]);

输出的是三个标签内容,不是dom对象

http://img1.sycdn.imooc.com//58555b610001353802970050.jpg

不妨把li[1]改为eq(1)

console.log(li.eq(1));

打印的是,是可以操作dom元素的

http://img1.sycdn.imooc.com//58555ade00015cee03540161.jpg



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

慕粉18221508921 提问者

非常感谢!
2016-12-18 回复 有任何疑惑可以回复我~
#2

慕粉18221508921 提问者

li.eq(i)这个用法哪里看到的呢
2016-12-18 回复 有任何疑惑可以回复我~
#3

虚年_640 回复 慕粉18221508921 提问者

eq(index),匹配索引为index的元素。详情http://www.imooc.com/code/8344
2016-12-18 回复 有任何疑惑可以回复我~
#4

慕粉18221508921 提问者 回复 虚年_640

这个我知道,用的话,一般都是,$("li:eq(0)"),这样的话,$("li:eq(index)")就跑不出来,一般用其他办法解决,然后你直接用$("li").eq(index)就实现了,,,所以好奇,,,怎么可以直接这样用的,没见过,然后我用$("li").first就不行,,,,
2016-12-19 回复 有任何疑惑可以回复我~
查看1条回复

jquery对象是一个类似数组的对象,可以通过[index]的方法得到相应的DOM对象

var lis = $('li');  //这是jq对象

var li = lis[0];  //这是DOM对象

你写的li[1].css这是DOM对象用jquery的方法,当然不行啦

li.eq[index]这才是jq的方法。

刚开始学很容易二者的一些方法记混淆,多用就好啦

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

慕粉18221508921 提问者

学习学习了,谢谢指导哇 :-)
2016-12-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

li[1].css("color","blue"); // 问题:li是个数组,为什么这里加上[i]会没有效果?换成index也不行,为什么呢?

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