2012-02-10 167 views
0

我有三個列表。 當我點擊下一步,我想獲得下一個李,這是好的,但是當我到達第一個列表的結尾時,我希望下一個是第二個列表中的第一個..我會嘗試解釋一下更好一點。nextAll() - 多列表遍歷

<ul class='list'> 
    <li image_id="1"></li> 
    <li image_id="2"></li> 
</ul> 

<ul class='list'> 
    <li image_id="3"></li> 
    <li image_id="4"></li> 
</ul> 

<ul class='list'> 
    <li image_id="5"></li> 
    <li image_id="6"></li> 
</ul> 

所以,我有三個列表。接下來我想知道有多少利的有,所以我寫了..

var how_many $('ul.list li').length; 

這是件好事,這勾起所有6裏的..

接下來我想找到一個李,如果它有圖像ID即時通訊。

var which = $('ul.list li[image_id^="' + image_id +'"]'); 

這一切都很好。

所以現在我要去尋找下一個李娜的圖片ID是什麼..

var found_next = which.nextAll('ul.list li').attr('image_id'); 

這也適用..

我然後加載新的圖像中使用具有回調.load更新當前image_id ...

「問題」是當點擊,next..next..next等,我說到第一個列表的結尾jquery帶回「未定義」不是第一個李第二個列表。有沒有人有任何建議?

任何幫助將不勝感激。

+0

首先去的地方時,這些問題的發生 - > http://api.jquery.com/nextAll/組合 – elclanrs 2012-02-10 17:34:16

回答

4

.nextAll只適用於兄弟姐妹。如果要跳轉到下一個<li>,則必須選擇所有元素,並使用.index.eq()選擇下一個<li>

var $li = $('ul.list li'); 
// Example, inside an event listener: 
    var index = $(this).index($li); 
    var nextElement = $li.eq(index + 1); 
+1

也許用'.index()'。 – 2012-02-10 17:33:20

+0

謝謝我只是擡頭.index ..謝謝 - 將編輯,如果成功。 – Iamsamstimpson 2012-02-10 17:35:51

+0

@smoop你必須仔細閱讀'index'。它有幾種風格(正如您可以在[文檔](http://api.jquery.com/index/)中看到的那樣)。 PS。你也可以找到[這個答案](http://stackoverflow.com/a/8735489/938089?jquery-next-and-prev-with-a-wrapper)有用。 – 2012-02-10 17:39:23

1

不確定您是否已經計算出它。如果沒有,你可以嘗試:

var $li = $('ul.list li'), i = 0, $currentLi; 

$('button').click(function(){ 
    if(i < $li.length) { 
     $currentLi = $li.eq(i); //eq(i) returns a jQuery object where i is the zero-based index 
     i++ 
    }else { 
     alert('End of LIs'); 
    } 
}); 

這裏是一個工作Demo

+0

這是非常優雅的解決方案,謝謝,我也會考慮到這一點。感謝您的時間。 – Iamsamstimpson 2012-02-11 12:15:42