2017-08-24 105 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