Jquery next()问题

时间:2011-03-25 16:53:35

标签: javascript jquery next

我有这段代码:

<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')不返回任何内容。

4 个答案:

答案 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');
}

See example here.

答案 2 :(得分:1)

那是因为你在代码中指定了你想要下一个具有类showincatalog的元素。如果您想要包含不包含的div ...请从prev()next()来电中移除选择器。

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

答案 3 :(得分:1)

查看next上的JQuery文档。

  

该方法可选择接受a   选择器表达式相同的类型   我们可以传递给$()函数。   如果紧接着兄弟姐妹   匹配选择器,它仍然存在   新构造的jQuery对象;   否则,将其排除