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