對不起,我真的不知道如何簡單地提出這個問題。我有一個函數可以克隆一個TR及其所有子元素,並將它們全部重命名(id和name),它將克隆添加到原始文件的下面。 TR中的一個元素(目前只有一個,即將成爲4)是一個jQuery UI自動完成小部件。jQuery更改爲克隆自動填充小部件,只改變原始
所以我的第一個問題是,當新的TR被添加時,死者自動填充小部件不再是自動填充小部件 - 它只是一個普通的舊文本字段。這是有道理的,因爲我將不得不爲新創建的元素應用新的$(foo).autocomplete(bar)。
所以我的下一個問題是當我嘗試重新應用$(foo).autocomplete(bar)到克隆的元素時,它似乎改變了原始元素而不是新的克隆!我在調用$(foo).autocomplete(bar)的同時,對相同的元素進行了其他更改,其他更改也可以正常工作(標識和名稱)。在克隆TR之後,原始的行爲就像克隆應該如何進行,克隆基本上什麼都不做!
對不起,長的解釋,這裏是代碼:
function cloneBelow(TR) {
var newRow = $(TR).clone();
var lastID = $(TR).attr('id');
var currID = Number(lastID.substring(3));
var newID = currID;
var i = 0;
while(i < 1){
newID = newID + 1;
if($(('#tr_' + newID).replace(/\./g, "\\.")).length < 1){
i = 1;
}
}
$(newRow).attr('id','tr_'+newID);
$(TR).after(newRow);
var i = 0;
$('#tr_'+newID).find("[type=text],td,.cellContent").each(function(){
var child = $(this);
var newVal = child.attr("id");
newVal = newVal.substring(0,newVal.indexOf("_")+1) +newID+newVal.substring(newVal.lastIndexOf("_"));
child.attr("id", newVal);
//apply changes to form autocomplete fields:
if($(child).attr('name')){ //this will filter out any non-text fields
child.attr("name", newVal);
//Begin code to make element a autocomplete widget
var tmpArray = ["test1","test2","test10"];
$(child).autocomplete({
source: tmpArray,
select: function(event, ui) {
var CTId = $(child).attr("id").substr(3);
var selectedObj = ui.item;
$('#CT_'+CTId).html(selectedObj.value);},
minLength: 0
}).addClass("ui-widget ui-widget-content ui-corner-left");
alert($(child).attr("id")+" - "+tmpArray);
}
});
$(".target").contextmenu(option);
}
我不是非常有經驗與jQuery(你可能知道),我已經經歷了無數的問題正與這個項目,並我正在接近。
編輯: 我使用.autocomplete(「破壞」)方法來恢復克隆的元素回只是一個普通的文本字段,這樣我就可以然後重新應用.autocomplete(嘗試),它實際上從兩個刪除它元素 - 不是我想要的。不過,我瞭解到,jQuery UI不支持克隆,所以顯然它克隆的元素,但克隆和原始共享相同的部件或任何東西。
我仍然在尋找這個問題的遞歸解決方案,因爲我有4個類似的功能和每行7個不同的元素需要autocompletes - 顯然我不想複製和粘貼代碼28次,每次改變一些東西時都要重複。
所以你做到了,而不是.autocomplete()?或之後?參數是否相同? – jreed121 2011-05-04 17:12:57
我不知道這些參數是否相同。您使用的控件與我所做的不同,因此我懷疑不是。我試圖做的一點是,使用Live()關鍵字時,創建控件時會附加事件。或者,正如我以後所做的那樣,當我將新控件放在頁面上時,我接着調用jQuery方法來實例化插件。 – griegs 2011-05-05 02:41:07