我有这段代码:
<div class="window-compl">
<div class="window showincatalog showing">
<h2>Text1</h2>
</div>
<div class="window">
<h2>Text2</h2>
</div>
<div class="window showincatalog">
<h2>Text3</h2>
</div>
<div class="window showincatalog">
<h2>Text4</h2>
</div>
</div>
我在这个函数中使用了jquery selectors next()和prev():
function rotate(direction) {
var current = $('.showing');
if (direction==0)
var next = $('.showing').prev('.showincatalog');
else
var next = $('.showing').next('.showincatalog');
}
当所有div标签都有类showincatalog时,它会起作用,但当其中一个没有时,它会停止。
如果有人知道为什么这不起作用会很棒
更新:我需要使用类“showincatalog”和Text3选择div,但是$('。shows')。next('。showincatalog')不返回任何内容。
答案 0 :(得分:3)
我想我得到了你想要做的事情,并且自己也受到了刺痛。诀窍是next
要么获得下一个元素,要么什么也得不到。如果您想要“与此选择器匹配的下一个元素”,请使用.nextAll('selector').first()
。
答案 1 :(得分:2)
我认为你想要的是这样的:
function rotate(direction) {
var current = $('.showing'),
next;
if (direction == 0) {
next = $('.showing').prevAll('.showincatalog').first();
} else {
next = $('.showing').nextAll('.showincatalog').first();
}
current.removeClass('showing');
next.addClass('showing');
}
答案 2 :(得分:1)
那是因为你在代码中指定了你想要下一个具有类showincatalog
的元素。如果您想要包含不包含的div ...请从prev()
和next()
来电中移除选择器。
......我假设那是你破碎的意思。如果行为不同,那么您应该编辑您的问题。
答案 3 :(得分:1)
查看next上的JQuery文档。
该方法可选择接受a 选择器表达式相同的类型 我们可以传递给$()函数。 如果紧接着兄弟姐妹 匹配选择器,它仍然存在 新构造的jQuery对象; 否则,将其排除。