循环遍历jQuery?

时间:2013-06-25 23:18:29

标签: jquery dom

有没有办法在一个圆圈中遍历DOM?比如,当你到达列表的末尾时,它会循环回到开头?

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

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

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

3 个答案:

答案 0 :(得分: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;
};

然后使用like(http://jsfiddle.net/sszRN/);

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

答案 1 :(得分:2)

我有时会使用

var $next = $( $(this).next()[0] || $(this).prevAll().addBack()[0] );
是的,疯了:D

答案 2 :(得分:0)

不完全确定您在此处要求或尝试实现的目标,但如果您只是想在第一个元素中添加一个类,则可以执行此操作

遍历dom以找到父元素

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

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