jquery index()返回-1

时间:2011-05-20 04:20:55

标签: jquery

为什么我的imageIndex会一直返回-1;

    $(function(){
            //rotateImages();
        setInterval("rotateImages()", 4000);
    });

    var imageIndex = 0;
    var currentPhoto = $("#photoShow div.current");

    function rotateImages(){
        var max = $("#photoShow div").length;
        imageIndex = currentPhoto.index();
        console.log(imageIndex + "    ::   "+ (max - 1));

    }

HTML:

<body>

<div id="photoShow">
    <div class="current">
        <img src="images/Grass.jpg" alt="Photo Gallery" width="400" height="400" class="gallery" />
    </div>
    <div>
        <img src="images/Leaf.jpg" alt="Photo Gallery" width="400" height="400" class="gallery" />
    </div>
    <div>
        <img src="images/Spring.jpg" alt="Photo Gallery" width="400" height="400" class="gallery" />
    </div>
    <div>
        <img src="images/Water.jpg" alt="Photo Gallery" width="400" height="400" class="gallery" />
    </div>
</div>

3 个答案:

答案 0 :(得分:3)

$。如果找不到元素,index()返回-1。

基于上面的源代码,看起来你没有等到DOM准备就绪才宣布currentPhoto ...所以当定义变量时,DOM中的元素可能还不存在。< / p>

只需将所有内容移动到$(function(){...})即可获得您期望的结果。

$(function(){
    //rotateImages();
    setInterval("rotateImages()", 4000);
    var imageIndex = 0;
    var currentPhoto = $("#photoShow div.current");

    function rotateImages(){
        var max = $("#photoShow div").length;
        imageIndex = currentPhoto.index();
        console.log(imageIndex + "    ::   "+ (max - 1));
    }
});

答案 1 :(得分:1)

尝试:

imageIndex = $('#photoShow').index('.current');

答案 2 :(得分:0)

此声明var currentPhoto = $("#photoShow div.current");的长度为1,因为您的代码只有一个<div class="current">

在这种情况下,

imageIndex = currentPhoto.index();应该返回0。在控制台日志中0 - 1 = -1是输出

编辑:
对不起,你正在做var max = $("#photoShow div").length;和max - 1. imageIndex应为零:-(