Я создаю инструмент разработки генератора активности. Пользователь, используя контекстное меню, может выбрать добавление ряда элементов на страницу, а некоторые из них заполнить текстом.
Используя Jquery UI, все элементы можно перетаскивать, а некоторые из них можно изменять. Я хочу, чтобы пользователь мог сделать точную копию элемента, но когда я использую функцию клонирования, я получаю странные результаты. Я могу перетащить оригинал из клона, но когда я пытаюсь перетащить клон, он просто перетаскивает оригинал и остается на своем месте.
Вот мой код
function addobject (element_type){
$('#activitystage').append($("<div class=\"draggable " + element_type + "\" id=\"" + counter + "\"></div>"));
$( "#" + counter ).multidraggable({ containment: "#activitystage", grid: [10, 10],drag: function(event,ui){ showpositions(); }});
$('#' + counter).contextMenu({menu: 'functionsMenu' }, function(action, el, pos) {run(action, el); });
$('#' + counter).append("<textarea class=\"" + element_type + "\"></textarea>");
}
function run (action, el){
switch (action){
case "clone":
$(el).clone(true).attr('id', 'some new id').appendTo('#activitystage');
break;
}
1 ответ
Самое простое решение вашей проблемы, которое я могу придумать, - это просто использовать clone (false) и повторно привязать событие перетаскивания.
Попробуйте этот код
var attr = { containment: "#activitystage", grid: [10, 10],drag: function(event,ui){ showpositions(); }};
function addobject (element_type){
$('#activitystage').append($("<div class=\"draggable " + element_type + "\" id=\"" + counter + "\"></div>"));
$( "#" + counter ).multidraggable(attr);
$('#' + counter).contextMenu({menu: 'functionsMenu' }, function(action, el, pos) {run(action, el); });
$('#' + counter).append("<textarea class=\"" + element_type + "\"></textarea>");
}
function run (action, el){
switch (action){
case "clone":
$(el).clone(false).attr('id', 'some new id').appendTo('#activitystage').multidraggable(attr);
break;
}
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.
counter
является числом, то у вас недопустимый HTML. Идентификаторы не могут начинаться с цифры.