4

有什么办法可以循环遍历 DOM 吗?就像,当你到达列表的末尾时,它会循环回到开头?

这是一个例子,它不起作用,但希望能说明我想要达到的效果:

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

$('li.four').next().addClass('one');
4

3 回答 3

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');
于 2013-06-25T23:25:34.247 回答
2

我有时用

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

是的,疯了 :D

于 2013-06-25T23:34:05.740 回答
0

不完全确定您在这里要求或尝试实现什么,但如果您只想向第一个元素添加一个类,您可以这样做

遍历dom找到父元素

找到该元素的第一个孩子 - 像这样

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

于 2013-06-25T23:31:02.633 回答