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;
}

HTML 中的最终结果基本上是:

<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 回答