У меня есть функция, успешно удаляющая элемент и добавляющая его в другом месте страницы как успешная. Проблема в том, что как только документ готов, 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 оставались нетронутыми. Выше вы можете видеть, что я пытался скрыть элемент, убедившись, что он по-прежнему остается действительным элементом с правильными классами / атрибутами, но в конце концов это все равно не сработало. В идеале я мог бы полностью удалить элемент и воссоздать его с правильными классами.
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));
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
clone_items
? То же самое сmake_li
иmake_h3
. Откуда появляетсяname
изнутриcopy_items
и какова его область видимости?