【问题标题】:JQuery: Hide children, show nth child?JQuery:隐藏孩子,显示第n个孩子?
【发布时间】:2013-06-06 18:50:27
【问题描述】:

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

我在一个 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;
}

问题是没有其他 a 标记,尽管循环的第一个输出,被显示。尽管有 .show(),但它们都保持隐藏状态。看来$("images:nth-child(" + i + ")").show(); 行不起作用。

谁能指出我正确的方向?

【问题讨论】:

  • @GeorgeCummins 糟糕,忘记粘贴了。它是父元素中 A 标签的数量。以上修改
  • delay() 有什么用处?

标签: javascript jquery jquery-selectors


【解决方案1】:

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

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

但我只会使用eq,不确定以上是否可行,因为图像是在标签中:

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

无论如何,你不需要while 循环,只需使用jQuery 的each 循环集合。

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

【讨论】:

  • 或者只使用前面语句中已经选择的$('#images').children()...
  • @Bergi:问题中的代码虽然有点乱。我尝试解释错误,但 OP 应该循环使用 each,不知道为什么 while 循环...
猜你喜欢
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多