2013-06-25 174 views
4

有什麼方法可以遍歷DOM中的一個圓?就像,當你到達列表的末尾時,它會回到起點?在jQuery中循環遍歷?

下面是一個例子,這是不行的,但將有希望說明我想達到的效果:

<ul> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li class="four"></li> 
</ul> 

$('li.four').next().addClass('one'); 
+0

[鏈接] http://stackoverflow.com/questions/10004593/how-jquery-data-breaks-circular-reference – pl71

回答

5

沒有什麼內置的,但你可以平凡寫你自己的方法;

jQuery.fn.nextOrFirst = function (selector) { 
    var next = this.next.apply(this, arguments); 

    if (!next.length) { 
     var siblings = this.siblings(); 

     if (selector) { 
      siblings = siblings.filter(selector); 
     } 

     next = siblings.first(); 
    } 

    return next; 
}; 

然後使用像(http://jsfiddle.net/sszRN/);

$('li.four').nextOrFirst().addClass('one'); 
+0

正是我在過程打字:) –

+0

@MikeBrant:偉大的思想家都一樣;) – Matt

+0

完美。太感謝了。 –

0

不完全知道你是問什麼,或者想在這裏實現,但如果你只是想添加一個類的第一個元素,你可以做到這一點

遍歷DOM尋父元素

找到該元素的第一個孩子 - 這樣

$('li.four').parent().find(">:first-child").addClass('one');

2

我有時用

var $next = $($(this).next()[0] || $(this).prevAll().addBack()[0]); 

是啊,瘋狂:d