javascript – 如何使用jQuery循环兄弟姐妹?

我有以下代码

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()函数).

jsfiddlehttp://jsfiddle.net/S28uC/

解决方法

我更喜欢siblings.first()而不是兄弟姐妹(“: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");
});

这种方法有两个因素:

>当你想无限期地循环收集时,会想到模数
>摆脱if使得更智能的代码

当设置div的值时,我首选$selected.parent().children()超过等价的$selected.siblings().添加($selected)作为品味 – 实际上有无穷无尽的可能性.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...