【发布时间】:2011-07-31 08:38:59
【问题描述】:
如何选择所有元素,出现在某个元素之后,即页面后面
【问题讨论】:
如何选择所有元素,出现在某个元素之后,即页面后面
【问题讨论】:
如果您所说的元素都是彼此之间的兄弟姐妹,那么.nextAll() 就是要使用的函数。
如果元素可以出现在页面上的任何地方(无论它们嵌套在什么级别),那么您可以利用 jQuery(从 1.4 版开始)总是返回元素的事实按文档顺序,即使你 .add() 收藏了一些东西。
因此基本思路是先选择所有元素,不管它们是在“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。
【讨论】:
您能否提供一段代码或至少一个结构示例或您想要实现的描述?你查过hierarchy jQuery selectors吗?
【讨论】:
我不相信有一种简单的方法可以做到这一点。真正的问题是你为什么要这样做?无论如何,如果你真的需要,.nextAll()、.each() 和 .children() 的组合会有所帮助。
var nodes = [];
$('#original').nextAll().each(function() {
nodes.push(this);
$(this).children().each(function() {
// some recursive function to add a deep set of children
}
}
但是,同样,您可能应该做一些不同的事情。
【讨论】:
您如何识别您的“特定元素”?是否使用特定的ID。或者只是一个标签名称。
您还可以为您命名为“特定元素”的每个标签添加一个 id,并使用 nextall() 显示该 id 之后的所有内容。这只是一个疯狂的猜测。
【讨论】: