Jquery:选择所有元素,稍后出现在页面上的某个元素之后

时间:2011-04-07 04:19:19

标签: jquery jquery-selectors

如何选择出现在某个元素后面的所有元素,即稍后在页面上

5 个答案:

答案 0 :(得分:7)

如果您所谈论的元素彼此都是兄弟姐妹,那么.nextAll()就是要使用的功能。

如果元素在页面上出现任何地方(无论它们嵌套在哪个级别),那么您可以利用jQuery(从1.4版开始)始终返回元素的事实按文档顺序排列,即使您.add()收集了某些内容。

因此,基本思想是首先选择所有元素,无论它们是在“start”元素之前还是之后,然后将“start”元素添加到集合中。然后,您可以遍历已排序的元素,查找“start”元素的位置。然后只需.slice()此位置后的所有元素:

var start = '#start';
var all = 'p';
var index;

var afters = $(all).add(start).each(function (i) {
    if ($(this).is(start)) {
        index = i;
        return false; // quit looping early
    }
}).slice(index + 1);

在行动here中查看。

答案 1 :(得分:1)

您能提供一段代码,或者至少提供您想要实现的结构或描述样本吗?你检查了hierarchy jQuery selectors吗?

答案 2 :(得分:1)

我不相信有一种简单的方法可以做到这一点。真正的问题是你为什么要这样做?无论如何,如果你真的需要,.nextAll(),。double()和.children()的某些组合将有所帮助。

var nodes = [];

$('#original').nextAll().each(function() {
  nodes.push(this);
  $(this).children().each(function() {
     // some recursive function to add a deep set of children
  }
}

但是,你应该做一些不同的事情。

答案 3 :(得分:1)

您如何识别'某个元素'?是使用特定的ID。或者只是标签名称。

您还可以为每个标记为“特定元素”的标记添加ID,并使用nextall()显示id后面的所有内容。这只是一个疯狂的猜测。

答案 4 :(得分:0)

参考this

另一种方法

$('selector').nextALL('selector')

参考此nextAll

$('div.third-item').nextAll("div")