javascript - 如何使用 jQuery 遍历 sibling ?

标签 javascript jquery next siblings

我有以下代码:

html:

<div class="container">
    <div class="selected">A</div>
    <div>B</div>
    <div>C</div>
    <div>D</div>
</div>
<button id="next">next!</button>

jQuery:

$("#next").click(function() {
    $(".selected").removeClass("selected").next().addClass("selected");
});

我想要的是循环遍历容器中的 div。我可以这样做来循环:

$("#next").click(function() {
    if ($(".selected").next().length == 0) {
        $(".selected").removeClass("selected").siblings(":nth-child(1)").addClass("selected");
    }
    else {
        $(".selected").removeClass("selected").next().addClass("selected");
    }
});

但我认为有更简单的方法。我怎样才能让它更简单? (我不介意您不使用 next() 函数)。

jsFiddle:http://jsfiddle.net/S28uC/

最佳答案

我更喜欢 siblings.first() 而不是 siblings(":nth-child(1)"),但本质上你无法在不使用 next().length 的某些变体的情况下环绕。

更新:如果我是从头开始写这篇文章,我会这样做:

$("#next").click(function() {
    var $selected = $(".selected").removeClass("selected");
    var divs = $selected.parent().children();
    divs.eq((divs.index($selected) + 1) % divs.length).addClass("selected");
});

这种方法的动机有两个:

  1. 当您想无限期地循环一个集合时,就会想到取模
  2. 摆脱 if 使代码看起来更智能

当设置 divs 的值时,我更喜欢 $selected.parent().children() 而不是等效的 $selected.siblings().add( $selected) 视个人喜好而定——实际上有无穷无尽的可能性。

关于javascript - 如何使用 jQuery 遍历 sibling ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414573/

相关文章:

javascript - React setState 更新 props

javascript - 如果没有发生按键事件,js 按键事件和操作之间的时间间隔

excel - Microsoft Excel - 搜索并找到下一个最高值

javascript - 具有多个链接的 Accordion

ruby - “Next”关键字在特定 Ruby 代码中被误解

javascript - 需要获取作为字符串发送的变量的值?

javascript - 如何在 npm 中删除 dedupe 选项

javascript 连接到网站代码不起作用

javascript - '权限被拒绝'.load'ing IE 上的当前页面

javascript - .toggle() 函数