如何使用 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()
函数)。
jsFiddle: http://jsfiddle.net/S28uC/
I have the folowing code:
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");
});
What i want is loop through the divs in the container. I can do this to cycle:
$("#next").click(function() {
if ($(".selected").next().length == 0) {
$(".selected").removeClass("selected").siblings(":nth-child(1)").addClass("selected");
}
else {
$(".selected").removeClass("selected").next().addClass("selected");
}
});
But i think there is a simpler way. How can i make it simpler ? (I don't mind if you don't use the next()
function).
jsFiddle: http://jsfiddle.net/S28uC/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我更喜欢
siblings.first()
而不是siblings(":nth-child(1)")
,但本质上你将无法环绕不使用next().length
的某些变体。更新:如果我从头开始写这篇文章,我会这样做:
这种方法有两个因素驱动:
if
使代码看起来更智能当设置
divs
的值时,我更喜欢$selected.parent().children()
而不是相等的$selected.siblings().add($selected)
作为一种品味问题——实际上有无限的可能性。I 'd prefer
siblings.first()
instead ofsiblings(":nth-child(1)")
, but in essence you won't be able to wrap around without using some variant ofnext().length
.Update: If I were writing this from scratch, this is how I 'd do it:
This approach is motivated by two factors:
if
makes for smarter-looking codeWhen setting the value of
divs
I preferred$selected.parent().children()
over the equivalent$selected.siblings().add($selected)
as a matter of taste -- there are practically endless possibilities.一种简单的方法是这样的:
One simple way is this :
这个怎么样。
以古老的良好人工智能方式,您尝试执行该操作(addClass),如果它有效(长度<> 0),则无需再做任何事情,否则您在第一个兄弟姐妹上再次尝试。
how about this.
In old good AI manner you try to do the deed (addClass), if it worked (length <> 0) nothing more to do, otherwise you try again on the first of the siblings.
你可以试试这个
只需每次点击都会增加
i
,当它到达末尾(div
s length )时,它将被重置。You can try this
simply you will increase
i
for each click and when it reach the end (div
s length ) it will be reset.