2012-11-06 40 views
2

我試圖自動填充可見元素的日期範圍。只要有一個空的結束日期被填充,我的代碼就可以正常工作,但我很難理解clone()方法爲什麼會運行兩次。數組的jquery clone()似乎是兩次克隆

小提琴是here

基本上他們是工作和角色。一份工作可以有很多角色,我認爲父母工作中的角色可能會有重疊的開始和結束時間,但這方面並不是必需的。喬布斯可以並且確實重疊開始和結束時間。代碼通過查找ROLES HTML中描述的開始和結束時間來工作,並且如果沒有指定結束時間,則將角色結束時間填充爲「CURRENT」。然後,爲了填充JOB時間,它收集數組start(var start = [])中的所有開始時間以及數組end(var end = [])中的所有結束時間。然後,它對startend進行排序,並將第一個start索引(日期)作爲JOB的開始,並將end的最後一個索引(日期)作爲JOB的結束日期。不知怎的,問題在$(this).find('>h1').after($('.workexperience time.end[datetime=' + end[end.length-1] + ']').clone()); 這一行,因爲這些數組似乎是正確的。

你能幫我指出我的代碼中錯誤的正確方向嗎?

每NNNNNN: 查詢$('.workexperience time.end[datetime=' + end[end.length-1] + ']')之前的克隆是:

[ 電流 , 電流 ]

[ 2012九月 ]

[ 當前 , 當前 , 當前 , 當前 ]

[2006 月 ]

[ 2002年6月 ]

查詢end[end.length-1]變量最終結果如下:

2012-11

2012-09

2012-11

2006-03

2002-06

+1

'$('。workexperience time.end [datetime ='+ companyEnd +']')'匹配了多少個元素? '.clone()'會複製所有匹配項...... – nnnnnn

+0

查看上面的查詢... –

回答

2

你$( 'workexperience time.end [日期時間=' +端[end.length- 1] +「]」)正在收集所有的工作,而如果我理解正確的話它應該只作用於當前工作:

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

小提琴:http://jsfiddle.net/jYnZy/14/

+1

可能也應該做同樣的時間。開始在小提琴的下一行 – Michael

+1

是的,我實際上在更新的小提琴中都改變了。 – Christophe

+0

我通過使用.last()。clone()來調整代碼以解釋同時發生的多個作業:if($(this).find('time.end [datetime ($(this).find('time.end ['))'之後的'$(this).find('> h1')。 datetime ='+ end [end.length-1] +']')。last()。clone()); }($(this).find('time.end [datetime ='+ end [end.length-1] +']')else {$(this).find('> h1')。clone )); }' –