2

我有这个代码:

<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 选择器 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,但 $('.showing').next('.showincatalog') 什么也不返回。

4

4 回答 4

3

我想我得到了你想要做的事情,并且我自己也被这个刺痛了。诀窍是next要么获取下一个元素,要么一无所获。如果您想要“与此选择器匹配的下一个元素”,请使用.nextAll('selector').first().

于 2011-03-25T17:06:17.473 回答
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');
}

请参见此处的示例。

于 2011-03-25T17:15:55.313 回答
1

那是因为您在代码中指定您想要下一个具有 class 的元素showincatalog。如果您想包含不...的 div,请从prev()andnext()调用中删除选择器。

...我假设这就是你所说的破碎的意思。如果行为不同,那么您应该编辑您的问题。

于 2011-03-25T16:56:35.283 回答
1

在next上查看 JQuery 文档。

该方法可以选择接受与我们可以传递给 $() 函数的类型相同的选择器表达式。 如果紧随其后的兄弟与选择器匹配,则保留在新构造的 jQuery 对象中; 否则,它被排除在外

于 2011-03-25T17:01:25.430 回答