我正在尝试将对象克隆到JQuery对话框
我成功地使用append
将对象移动到目标区域,但是这也删除了我的原始对象。这些对象还具有在悬停和点击时设置其样式的功能。该函数使用对象的id来设置样式,因此在这种情况下,克隆对象的id必须与原始对象的id重复。
这样就可以移动原始对象,但不会克隆原始对象:
var lv_Parts = document.getElementById("DefaultPart"); // An area where my original 'parts' are
var lv_PartArea = $('<div class="PartWnd"/>'); // The new are for the parts, which is located in a JQuery dialog
lv_PartArea.html(lv_Parts.childNodes); // Adding the childNodes of the original partarea, which are parts
lv_CalcWindow.append(lv_PartArea); // Adding the parts to the new part area in the JQuery dialog
我尝试克隆它们但它不起作用:
var lv_Parts = $('DefaultPart');
var lv_PartArea = $('<div class="PartWnd"/>');
lv_PartArea.append(lv_Parts.children().contents().clone());
lv_CalcWindow.append(lv_PartArea);
我怎样才能做到这一点?
修改
这些是setStyle函数,我还将lv_obj更改为类名。它现在使用“Part”类点亮所有对象。
function Part_setStyle(pm_col, pm_id) {
var lv_obj;
if (!pm_id) {
lv_obj = ".Part";
} else {
lv_obj = pm_id;
}
$(lv_obj).css("background-color", pm_col);
}
function Part_onHoverIn(pm_this, pm_event) {
this.setStyle("rgb(135, 206, 250)");
}
function Part_onHoverOut(pm_this, pm_event) {
if (this.Selected == false) {
this.setStyle("rgb(220, 197, 220)");
}
}
答案 0 :(得分:1)
按类选择对象:
相反,此$('<div class="PartWnd"/>')
使用此$(".PartWnd")
按ID选择对象:
相反,此$('DefaultPart')
使用此$('#DefaultPart')
您的代码应如何:
var lv_Parts = $('#DefaultPart');
var lv_PartArea = $('.PartWnd');
lv_PartArea.append(lv_Parts.children().contents().clone());
lv_CalcWindow.append(lv_PartArea);
首先,具有相同id
的对象是错误的,请改用class
。 Ids必须是唯一的,因为javascript和浏览器可能会遇到具有相同ID的对象的问题,所以请记住这一点。如果你的代码有效,我不知道,我不知道例如lv_CalcWindow
是什么,但这里有一个关于克隆的小例子:
克隆div:
$("#div1").append($("#div2").clone());
克隆div并更改id以避免重复的ID:
$("#div1").append($("#div2").clone().attr('id', 'div3'));