Javascript 如何将两个元素之间的所有元素和子元素复制到临时元素中?
非常直截了当,只是不知道如何使用开始和结束节点执行循环部分=\ 正如@pimvdb在问题评论中指出的那样,“DOM不是一个扁平列表,而是一个层次模型。” 所以为了理解你的问题,我必须做一些假设 我将假设您的Javascript 如何将两个元素之间的所有元素和子元素复制到临时元素中?,javascript,jquery,Javascript,Jquery,非常直截了当,只是不知道如何使用开始和结束节点执行循环部分=\ 正如@pimvdb在问题评论中指出的那样,“DOM不是一个扁平列表,而是一个层次模型。” 所以为了理解你的问题,我必须做一些假设 我将假设您的start\u元素和end\u元素是同级元素,并且您正在尝试查找同时也是同级元素但出现在两者之间的所有dom元素。换句话说,我假设您正在讨论DOM的一个特定平面部分。如果我的假设是错误的,请忽略这个答案。如果我的假设是正确的,那么您可以像这样迭代所有兄弟姐妹,并且只匹配介于两者之间的兄弟姐妹:
start\u元素
和end\u元素
是同级元素,并且您正在尝试查找同时也是同级元素但出现在两者之间的所有dom元素。换句话说,我假设您正在讨论DOM的一个特定平面部分。如果我的假设是错误的,请忽略这个答案。如果我的假设是正确的,那么您可以像这样迭代所有兄弟姐妹,并且只匹配介于两者之间的兄弟姐妹:
context = document.createElement("span");
start_element = my_start_element;
end_element = my_end_element;
// some how iterate through here (assuming start and end are different elements)
[start_element .. end_element].each(function(current_element){
context.append(current_element);
});
注意,这假设start\u元素
和end\u元素
是普通DOM对象,而不是jquery扩展对象。如果它们是jquery扩展的,那么检查应该类似于If(this==start\u element.get(0))
还请注意,有一个方法,但我们使用了
$(start\u element).parent().children()
,因为我们希望原始start\u element
成为组的一部分。sublings()
方法将省略它。正如@pimvdb在问题注释中指出的那样,“DOM不是一个扁平列表,而是一个层次模型。”
所以为了理解你的问题,我必须做一些假设
我将假设您的start\u元素
和end\u元素
是同级元素,并且您正在尝试查找同时也是同级元素但出现在两者之间的所有dom元素。换句话说,我假设您正在讨论DOM的一个特定平面部分。如果我的假设是错误的,请忽略这个答案。如果我的假设是正确的,那么您可以像这样迭代所有兄弟姐妹,并且只匹配介于两者之间的兄弟姐妹:
context = document.createElement("span");
start_element = my_start_element;
end_element = my_end_element;
// some how iterate through here (assuming start and end are different elements)
[start_element .. end_element].each(function(current_element){
context.append(current_element);
});
注意,这假设start\u元素
和end\u元素
是普通DOM对象,而不是jquery扩展对象。如果它们是jquery扩展的,那么检查应该类似于If(this==start\u element.get(0))
还请注意,有一个方法,但我们使用了
$(start\u element).parent().children()
,因为我们希望原始start\u element
成为组的一部分。sublings()
方法将省略它。您也可以使用普通的DOM
和DocumentFragment
来完成这一点
假设开始节点和结束节点是兄弟节点,并且您有以下html:
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
您还可以使用普通的
DOM
和DocumentFragment
来实现这一点
假设开始节点和结束节点是兄弟节点,并且您有以下html:
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
什么是“中间”?DOM不是一个扁平列表,而是一个层次模型。您想知道如何复制元素吗?或者如何迭代元素?或者如何附加/删除元素?我们可以假设开始元素和结束元素之间的关系吗?他们总是兄弟姐妹吗?什么是“中间”?DOM不是一个扁平列表,而是一个层次模型。您想知道如何复制元素吗?或者如何迭代元素?或者如何附加/删除元素?我们可以假设开始元素和结束元素之间的关系吗?他们总是兄弟姐妹吗?我认为,您可以将
兄弟姐妹()
与组合,以保留原始开始元素作为组的一部分。我认为,您可以将兄弟姐妹()
与组合,以保留原始开始元素作为组的一部分。