2012-03-31 77 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