2012-03-31 72 views
0

我的HTML:是另一个jQuery next()的问题

<div id="gallery-thumbs"> 

    <div class="thumb"> 
     <img alt="2" src="gallery/thumbs/2.jpg" class="thumbimg hand" /> 
    </div> 

    <div class="thumb"> 
     <img alt="4" src="gallery/thumbs/4.jpg" class="thumbimg hand" /> 
    </div> 

    <div class="thumb"> 
     <img alt="100" src="gallery/thumbs/100.jpg" class="thumbimg hand" /> 
    </div> 

</div> 

的JavaScript:

nextphotoid = $('#gallery-thumbs img[alt="4"]').parent().parent().next("div.thumb img").attr('alt'); 

这应返回100,因为这是下一个图像的alt属性与alt='4'图像后的值,但它不起作用 - 为什么不呢?

我试过NextAll等的各种组合。我已经读过类似的问题,但无法得到我的工作 - 我明显缺少一些简单的东西。

回答

3

有一个家长()太多,你在#gallery-thumbs级别。使用next()会寻找兄弟姐妹那就是而不是你想要什么。

试试这个:

nextphotoid = $('#gallery-thumbs img[alt="4"]') 
    .parent() 
    .next("div.thumb") 
    .find('img') 
    .attr('alt'); 

fiddle

+0

这似乎并不工作。我认为问题在于我的HTML结构,因为我认为你的代码只是在图像alt ='4'中查看div,所以它从来没有找到其他图像? – 2012-03-31 10:02:52

+0

啊,是的,该死的。我纠正了这个例子。 – 2012-03-31 10:10:10

1

您使用的.next()错误,试试这个Fiddle

0
$('div.thumb img[alt*=4]') 
.parents('div :first') 
.next('div') 
.children('img') 
.attr('alt'); 

试试这个Fiddle

我真的不知道什么时候或为什么你需要找到“下一个('alt')“,当您已经提供一个为选择器

+0

为了简单起见,我对硬编码的4进行了硬编码,但是选择器将根据它们当前正在查看的图像而变化,并且数字不一定是递增的。有可能是一个更优雅的方式来实现所有这些,虽然 – 2012-03-31 10:52:50

+0

如果他们将变为变量你将如何指定他们作为选择器? – 2012-03-31 10:56:43

+0

他们点击的最后一个存储为变量。如果他们按下下一个按钮,我需要找到'下一个'这是我的问题是关于它的 – 2012-04-01 16:41:48