2017-08-24 103 views
0

我有两个div,第二次是从第一个使用克隆:如何选择重复的DIV ID的

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吗?

+7

你应该重新命名克隆,由于具有相同的ID是无效的HTML –

+0

你也可以使用CSS类实现你想要的。 –

+0

尽量只使用Jquery,当你使用它或只有JS。代替'document.getElementById()',你可以使用'$(“#yourid”)' – Alexis

回答

0

为了使用ids正确执行此操作,您需要更改所有嵌套节点中的所有ID属性,因为您创建了“深度”克隆。

当你真的需要克隆这样的节点时,我建议不要通过它们的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