当浏览器的JS控制台和JS文件运行时,相同JS的两个不同结果

时间:2014-02-22 09:44:47

标签: javascript jquery

<ul>
    <li><a href="#">Punches</a>
        <div class="def">
            <h2>Punches</h2>
            <ul id="PARENT" class="PARENT">
                <li class="CHILD"><a href="#item1">This Is Sparta</a></li>
                <li class="CHILD"><a href="#item2">You Shall not pass</a></li>
                <li class="CHILD"><a href="#item3">May the force be with you</a></li>
            </ul>
        </div>
    </li>

    <li><a href="#">Whistles</a>
        <div class="def">
            <h2>Whistles</h2>
            <ul id="PARENT" class="PARENT">
                <li  class="CHILD"><a href="#item4">How you doin ?</a></li>
                <li  class="CHILD"><a href="#item5">Let's put another shrimp on the barbequeue</a></li>
            </ul>
        </div>
    </li>           
</ul>

当我输入$('ul.PARENT&gt; li.CHILD');在浏览器的JS控制台中我得到长度为5的数组,但是当我从文件中执行完全相同的操作时,我得到的数组长度为3.即当我单击名为“你怎么做?”的链接时,它会在索引处显示对象选择0而不是显示索引3处的对象已被选中。谁能告诉我这是怎么回事?

1 个答案:

答案 0 :(得分:0)

没有发现计数问题。

但是index()方法根据它的调用方式而有所不同。

jQuery(function($){
    var $lis = $('ul.PARENT > li.CHILD');
    console.log($lis.length);
    $lis.click(function(e){
        e.preventDefault();
        console.log($lis.index(this))
    })
})

演示:Fiddle

如果你想要当前元素的整体索引对一组元素,那么使用上面的语法