由于@ pimvdb在问题评论中指出:“DOM不是一个扁平列表,而是一个分层模型。”
所以为了弄清楚你的问题,我必须做出假设。
我会假设你start_element
和end_element
是兄弟,和你正在努力寻找那也是同级,但两者之间似乎所有的DOM元素。换句话说,我假设你正在谈论DOM的一个特定平面部分。如果我的假设是错误的,请忽略这个答案。如果我的假设是正确的,那么你可以遍历这样所有的兄弟姐妹,只有在两者之间匹配的:
var siblings = $(start_element).parent().children();
var currently_between = false;
var matches = [];
siblings.each(function() {
if (this == start_element) currently_between = true;
else if (this == end_element) currently_between = false;
else if (currently_between) matches.push(this);
});
// "matches" contains the in-between elements
注意,这个假设start_element
和end_element
是普通DOM对象,而不是jQuery的扩展对象。如果他们是jQuery扩展,那么检查应该像if (this == start_element.get(0))
。
还要注意的是有一个jquery siblings方法,但我们用$(start_element).parent().children()
,而不是因为我们想原来start_element
成为组的一部分。 sublings()
方法将不会使用。
什么是“之间”? DOM不是一个扁平列表,而是一个分层模型。 – pimvdb
你想知道如何复制元素吗?或者如何遍历元素?或者如何追加/删除元素? –
我们可以假设任何关于开始和结束元素之间的关系吗?他们总是兄弟姐妹吗? –