2013-03-08 49 views
0

我試圖將JQueryUI's DatePicker應用於節點,它適用於所有預先創建的節點,但是當我使用克隆插入新節點時,似乎無法應用它。將JQuery應用於插入的克隆節點

下面是我創建新節點的功能。

function addActivity() 
{ 
    var what=["spacer","mWith","mType","mDate","mWhere"]; 
    var newActivity; 
    for(i=what.length;i>0;i--) 
    { 

     newActivity = document.getElementById(what[i-1]).cloneNode(true); 
     insertAfter(document.getElementById("mWhere"),newActivity); 
    } 

} 

編輯:我insertAfter功能

function insertAfter(referenceNode, newNode) 
{ 
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); 
} 

,問題中的HTML我試圖克隆

  <tr id="mDate"> 
       <td>Activity Time: </td><td><input class="dateTimeField" id="actTime" type="text" name="meetingDate[]" /></td> 
      </tr> 

我試圖再次運行我的JQuery

$(function() { 
$(".dateField").datepicker(); 
$(".dateTimeField").datetimepicker(); 
}); 

但似乎沒有影響新的n頌

甚至試圖

onfocus="$(this).datetimepicker();" 

沒有運氣,任何想法?

+0

什麼是'insertAfter()'函數後添加以下

 if(what[i-1]=="mDate") { $(newActivity).find('input').removeAttr('id'); $(newActivity).find('input').removeAttr('class'); $(newActivity).find('input').datetimepicker(); } 

?你的意思是在那裏使用jQuery方法嗎?另外,如果你克隆了一個帶有id的節點,你需要在克隆後改變它的ID,使它再次變得唯一。 – jfriend00 2013-03-08 19:41:28

+0

我來補充一下,這只是我在節點後添加的一個函數。 – Jeff 2013-03-08 19:42:29

+0

如果沒有唯一的ID,JQuery的類應用程序無法工作嗎? – Jeff 2013-03-08 19:45:10

回答

0

想通了。 顯然,在應用日期選擇器之前,您需要從節點去除ID和Class。

newActivity = document.getElementById(what[i-1]).cloneNode(true); 
+0

也許datePicker代碼將類添加到節點,並且當您克隆節點並克隆這些類時,datePicker註冊代碼會看到已存在的類,因此它認爲它不必執行任何操作就可以將其掛鉤。當你刪除這些類時,它看起來像一個新的對象,所以它就是它的東西。 – jfriend00 2013-03-08 20:39:34