JQuery:隐藏孩子,展示第n个孩子?

时间:2013-06-11 01:43:58

标签: javascript jquery jquery-selectors

这真的很奇怪,应该很简单。

我在div中的标签内有一系列图像,例如:

<div id="images">
<a href="#"><img src="img1.jpg"/></a>
<a href="#"><img src="img2.jpg"/></a>
<a href="#"><img src="img3.jpg"/></a>
</div>

我想要隐藏所有这些,但是循环显示第n个,所以我创建了这个图像滑块样式脚本:

var atags = $('#images').children().length;

$('#images').children().hide();

$('#images a:first').show();

var i=0

while (i <= atags){

$('#images').children().delay(4000).hide();

$("images:nth-child(" + i + ")").show();

i = i + 1;
}

问题是没有其他标签,尽管首先出现了循环,但仍会显示。它们都保持隐藏状态.show()。行$("images:nth-child(" + i + ")").show();似乎无效。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

images != #images加上你需要选择实际的图像而不是容器:

$("#images img:nth-child(" + i + ")").show();

但我会使用eq,不确定如果上面的图像是 in 标签,上述内容是否会起作用:

$("#images img").eq(i).show();

在任何情况下,您都不需要while循环,只需使用jQuery的each来循环集合。

另请注意,delay仅在存在动画队列时才有效,而不是您的情况。