我有两个div,第二个是从第一个克隆使用:
function dupe() {
var cc = document.getElementById("cc"); // original
var cc2 = cc.cloneNode(true); // clone
cc.parentNode.appendChild(cc2);
$('#cc :input').attr('disabled', true);
document.getElementById("cc").style.opacity = "0.5"; // affects original, which is fine
document.getElementById("radioNew").checked = true; // affects original, but needs to affect clone
}
但是,这一行不会影响克隆,而是影响原始格式,就像它上面的一行:
document.getElementById("radioNew").checked = true;
由于克隆具有相同的ID,如何在克隆中选择ID?我是否必须创建一个函数来重命名克隆中的所有ID?
答案 0 :(得分:0)
要使用id正确执行此操作,您需要更改所有嵌套节点中的所有id属性,因为您创建了一个" deep"克隆
当你真的需要像这样克隆节点时,我建议不要通过id识别节点,而是通过其他选择器识别节点,比如CSS(伪)类。使用jQuery这很容易:
HTML:
<!-- Note: class attributes instead of id -->
<div class="cc">
<div class="radioNew">
...
</div>
</div>
JS:
var original = $('.cc');
var clone = original.clone();
original.find('.radioNew').attr( ... ); <--- finds subelement of original
clone.find('.radioNew').attr( ... ); <--- finds subelement of clone