组内的jquery选择器问题&循环元素

时间:2015-02-11 10:18:05

标签: javascript jquery jquery-selectors

我的问题是2折。我有以下代码:

$photosContainer = $("#photos-fs")
$photos = $photosContainer.find(".photo");
$length = $photos.length;

if ($length > 1) {
    setTimeout(showNextPhoto, 3000);
}

function showNextPhoto() {

    //$current = $photos.eq(0); <-- this works
    //$next = $photos.eq(1); <-- this works

    $current = $photos.find(".current"); <-- this does not
    $next = $current.next(); <-- this does not

    //do stuff with the selected elements here
}

我想要实现的基本上是在容器及其下一个兄弟(或组中的第一个,如果当前是最后一个)中找到.current分类元素,然后通过添加css类来动画它们。问题是虽然我可以使用.eq(0)和.eq(1)来获得元素,但是它们不会被选中&#34;对&#34;使用类(.current)或next()函数时。如果我控制台记录对象,我会得到适当的对象吗?

我总是使用find(&#34; .blahblah&#34;)的方式在组内的分类元素之间导航,所以不确定为什么它不能在这里工作?可能会有些愚蠢吗?

作为参考,这是html结构:

<div id="photos-fs">
    <div class="photo current" style="background-image: url(images/fs-image-01.jpg);"></div>
    <div class="photo" style="background-image: url(images/fs-image-02.jpg);"></div>
</div>

此外,是否有一个漂亮的外观和优雅的方式来测试最后一个项目,所以如果当前项目是最后一个(也许是.last?),你能和我分享一下吗?

喝彩!

1 个答案:

答案 0 :(得分:0)

您需要在声明中使用.filter()而不是.find()

使用

$photos.filter(".current");

而不是

$photos.find(".current");

测试最后一项,如果当前项目是最后一项

您可以使用.is()

yourElement.is(':last')