Javascript 数组的Jquery clone()似乎要克隆两次

Javascript 数组的Jquery clone()似乎要克隆两次,javascript,jquery,Javascript,Jquery,我试图自动填充可见元素的日期范围。只要只填充了一个空的结束日期,我的代码就可以正常工作,但是我很难理解clone()方法为什么要运行两次 小提琴是一种乐器 基本上是工作和角色。一个作业可以有许多角色,我猜父作业中的角色可能有重叠的开始时间和结束时间,但在这方面不是必需的。作业可以而且确实重叠开始和结束时间。代码通过查找角色HTML中描述的开始和结束时间来工作,如果没有指定结束时间,则将角色结束时间填充为“当前”。然后,为了填充作业时间,它收集数组start(var start=[])中的所有开始

我试图自动填充可见元素的日期范围。只要只填充了一个空的结束日期,我的代码就可以正常工作,但是我很难理解clone()方法为什么要运行两次

小提琴是一种乐器

基本上是工作和角色。一个作业可以有许多角色,我猜父作业中的角色可能有重叠的开始时间和结束时间,但在这方面不是必需的。作业可以而且确实重叠开始和结束时间。代码通过查找角色HTML中描述的开始和结束时间来工作,如果没有指定结束时间,则将角色结束时间填充为“当前”。然后,为了填充作业时间,它收集数组
start
(var start=[])中的所有开始时间和数组
end
(var end=[])中的所有结束时间。然后对
开始
结束
进行排序,并将第一个
开始
索引(日期)作为作业的开始,将
结束
的最后一个索引(日期)作为作业的结束日期。不知怎的,问题出在
$(this).find('>h1').after($('.workexperience-time.end[datetime='+end[end.length-1]+']).clone()之后;
,因为数组似乎是正确的

你能帮我指出代码中错误的正确方向吗

根据nnnnnn: 克隆之前的查询
$('.workexperience time.end[datetime='+end[end.length-1]+'])
是:

[ ​现在的​​ , ​现在的​​ ]

[ ​2012年9月​​ ]

[ ​现在的​​ , ​现在的​​ , ​现在的​​ , ​现在的​​ ]

[ ​2006年3月​​ ]

[ ​2002年6月​​ ]

变量end的查询
end[end.length-1]
结果如下:

2012-11

2012-09

2012-11

2006-03

2002-06

您的$('.workexperience time.end[datetime='+end[end.length-1]+'])正在收集所有作业,而如果我理解正确,则应仅限于当前作业:

$(this).find('time.end[datetime=' + end[end.length-1] + ']').clone()

Fiddle:

有多少元素与
$('.workexperience time.end[datetime='+companyEnd+'])匹配
.clone()
将复制所有匹配项…可能也应该在此时执行相同的操作。在Fiddle的下一行中开始。我使用.last().clone():
if($(this).find('time.end[datetime='+end[end.length-1]+'])。length>=2)调整代码以考虑同时发生的多个作业$(this.find('>h1')).after($(this.find($).time('time.end[datetime='+end[end.length-1]+']).last().clone();}else($(this.find('>h1')).after($(this.find('time.end[datetime='+end[end[end.length-1]+'])))).clone();}
@chrisfrisfrissina对,我也在想知道这件事,而不是clone(),也许您最好从头开始创建元素:after('另外,请注意,您的语句中不需要if,只需使用last()即可处理所有情况。