关于jquery的index()方法获取下标的问题

        <input type="text" name="" id="" value="" />
        <input type="button" name="" id="" value=""  class="a"/>
        <input type="button" name="" id="" value="" class="a"/>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <script type="text/javascript">
            $(function(){
                console.log($(".a").length) // 长度为2
                $(".a").click(function(){
                    console.log($(this).index()); //下标从1开始
                })
            })
        </script>

如以上代码,获取到的元素长度是2,但是在单击事件中,使用index()获取元素下标却是从1开始的.搜索所有文档都没有找到关于这个事情的说明,实在纠结
下标不应该从当前获取到的这一组元素中,从零开始到一吗

阅读 14.5k
2 个回答

如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的位置。
参考JQuery中文API

        <input type="text" name="" id="" value="" />
        <input type="text" name="" id="" value="" />
        <input type="button" name="" id="" value=""  class="a"/>
        <input type="button" name="" id="" value="" class="a"/>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <script type="text/javascript">
            $(function(){
                console.log($(".a").length) // 长度为2
                $(".a").click(function(){
                    console.log($(this).index()); //下标从2开始
                })
            })
        </script>

如果再加一个input标签,那么依次点击会是2,3

  1. 很明显你没有仔细看这个函数的说明,index这个方法带参数和不带参数的涵义是不一样的。

  2. 对于jq的疑问啊,我其实更推荐你把jq切换到非min版本,直接跟踪进去看看里面是怎么回事儿。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题