找不到使用children()。eq(n).nextAll()。find(' .class')

时间:2014-11-19 16:51:33

标签: jquery

我希望从指定的特定索引div中获取所有下一个('.slide')div。 下面的例子我希望在“C”之后的所有('.slide')div

HTML

<div id='parent'>
    <div class='slide'>A</div>
    <div class='slide'>B</div>
    <div class='slide'>C</div>
    <div class='slide'>D</div>
    <div class='slide'>E</div>
    <div class='otherdiv'>F</div>
    <div class='otherdiv'>G</div>
</div>

jQuery: $("#parent").children().eq(2).nextAll().find('.slide')

Fiddle Example

5 个答案:

答案 0 :(得分:3)

该代码目前正在执行以下操作:

//Retrieves the DOM element <div class='slide'>C</div>
$("#parent").children().eq(2)

//Retrieves DOM elements for spans D-G
.nextAll();

//Looks *inside* spans D-G for inner elements that have class 'slide'
.find('.slide')

.nextAll支持选择器进行过滤:

$("#parent").children().eq(2).nextAll('.slide');

答案 1 :(得分:0)

jQuery的.find()方法只搜索子元素,而不是兄弟元素。如果您使用.filter(),您的代码应该有效。

$("#parent").children().eq(2).nextAll().filter('.slide')

更新了Fiddle

或者,您可以将选择器包含在.nextAll()

的调用中
$("#parent").children().eq(2).nextAll('.slide')

答案 2 :(得分:0)

如果你想通过像C这样的特定值找到下一个:

$("#parent").filter(function () {
    return $(this).text() == "C"
}).nextAll(".slide");

答案 3 :(得分:0)

尝试

$("#parent").children().eq(2).nextAll('.slide')

答案 4 :(得分:-1)

你想要.filter('.slide')

因为.find()向下看树,但你已经有了div。

编辑:$("#parent > div.slide:gt(2)")也会通过选择器

执行相同的操作