2012-12-11 62 views
1

我有一個函數可以成功刪除元素,並在頁面的其他地方成功添加它。問題是隻要文檔準備就緒,jQuery就會向移動時丟失的孩子添加類和屬性。我需要這些類和屬性在刪除和追加後保留。我曾想過調用增加類的原始函數,但問題在於它們是基於關鍵的,並且在移動之前依賴於它們的位置,在更改密鑰後調用它,從而添加全新的和不同的類。如何使用jQuery追加一個元素,它的所有子元素以及父類和子元素的所有類

添加的jQuery的類是非常標準:

$(function(){ 
    $("div").each(function(key){ 
     if ($(this).hasClass("container")){ 
      $(this).find("ul").addClass("parent" + key); 
      $(this).find(".container-item").attr("parentClass", ".parent" + key); 
     }; 
    }); 
}); 

刪除/添加功能:

function copy_item(draggable, target){ 
    var account = clone_items(draggable); 
    //$('#'+name.uid).remove(); 
    $('#'+name.uid).hide(); 
    target.append(make_div(name, true, true)); 
    //$(draggable).children().attr("class", ($(draggable).children().attr("class"))); 
} 
function make_div(name, drag, drop){ 
    var newdiv = document.createElement('div'); 
    newdiv.setAttribute('id', name.uid); 
    newdiv.appendChild(make_h3(name.username)); 
    ul = document.createElement('ul'); 
    ul.setAttribute("class", "domain_list"); 
    newdiv.appendChild(ul); 
    for (j = 0; j < name.domains.length; ++j) { 
     ul.appendChild(make_li(name.domains[j], drag)); 
    } 
    return newdiv; 
} 

最終的結果在HTML基本上是:

<div class="container"> 
    <ul class="parent0"> 
     <li parentClass="parent0"> 
     <li parentClass="parent0"> 

再現當這個結構中,我需要具有類「parent0」和parentClass屬性不變。在上面,你可以看到我試圖隱藏元素,確保它仍然保持有效的元素具有正確的類/屬性,但最終仍然沒有成功。理想情況下,我可以完全刪除元素並使用正確的類重新創建元素。

+0

是否有可能創建一個JSFiddle? –

+0

您的示例代碼中有很多孤立的引用使得很難評估您做錯了什麼。什麼是'clone_items'?與'make_li'和'make_h3'一樣。 'name'來自'copy_items'內部,它的範圍如何? –

+0

對不起。我確實減少了一些函數,以便讀取,所以clone_items var永遠不會在上面使用。 make_li和make_h3的功能類似於make_div,但是,我的想法是make_div是似乎與這個問題有關的唯一函數。 make_h3創建用戶名,make_li創建一個項目數組來填充各個字段。名稱是一個全局變量。再一次,道歉,有時我不知道該砍什麼和不該砍的東西。 –

回答

1

如果我正確理解你正在嘗試做什麼,則不需要.remove()並重新創建元素以便移動它。你可以這樣做:

function copy_item(draggable, target) { 
    // not sure what this variable is for 
    // as you don't seem to be using it? 
    var account = clone_items(draggable); 

    // ...however, appending an existing 
    // element to another will 'move' it 
    // and preserve all of it's properties 
    target.append($('#' + name.uid)); 
} 
+0

是的。這是我想要的。萬分之一,謝謝。 –

相關問題