Dal momento che l'OP ha chiesto un modo per sostituire tutti i id duplicati di prima di loro aggiungendo, forse qualcosa di simile potrebbe funzionare. Supponendo che si voleva clonare MainConfig_1 in un blocco HTML come questo:
<div id="smallConfig">
<div id="MainConfig_1">
<ul>
<li id="red_1">red</li>
<li id="blue_1">blue</li>
</ul>
</div>
</div>
Il codice potrebbe essere qualcosa di simile a quanto segue, per trovare tutti gli elementi figli (discendenti) del blocco clonato, e modificare il proprio ID di utilizzare un contatore:
var cur_num = 1; // Counter used previously.
//...
var cloned = $("#MainConfig_" + cur_num).clone(true, true).get(0);
++cur_num;
cloned.id = "MainConfig_" + cur_num; // Change the div itself.
$(cloned).find("*").each(function(index, element) { // And all inner elements.
if(element.id)
{
var matches = element.id.match(/(.+)_\d+/);
if(matches && matches.length >= 2) // Captures start at [1].
element.id = matches[1] + "_" + cur_num;
}
});
$(cloned).appendTo($("#smallConfig"));
di creare nuovi HTML come questo:
<div id="smallConfig">
<div id="MainConfig_1">
<ul>
<li id="red_1">red</li>
<li id="blue_1">blue</li>
</ul>
</div>
<div id="MainConfig_2">
<ul>
<li id="red_2">red</li>
<li id="blue_2">blue</li>
</ul>
</div>
</div>
fonte
2011-06-14 13:32:16
@ Adamo Naylor Essere smarmy non è utile. –