1

要素を削除し、ページの他の場所に成功として追加することに成功した関数があります。問題は、ドキュメントの準備ができるとすぐに、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;
}

HTM1の最終結果は基本的に次のとおりです。

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

この構造を再作成するときは、クラス「parent0」とparentClass属性をそのままにしておく必要があります。上記では、要素を非表示にして、正しいクラス/属性を持つ有効な要素のままであることを確認しようとしましたが、最終的にはうまくいきませんでした。理想的には、要素を完全に削除して、正しいクラスで再作成できます。

4

1 に答える 1

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));
}
于 2012-12-11T15:09:32.627 に答える