53 votes

jQuery clone les ID en double

J'ai un élément HTML qui contient une grande collection de listes non ordonnées. J'ai besoin de cloner cet élément pour le placer ailleurs sur la page avec des styles différents (c'est assez simple en utilisant jQuery).

$("#MainConfig").clone(false).appendTo($("#smallConfig"));

Le problème, cependant, est que toutes les listes et les éléments de liste qui leur sont associés ont des ID et des noms de domaine. clone les duplique. Existe-t-il un moyen simple de remplacer tous ces identifiants en double à l'aide de jQuery avant de les ajouter ?

3voto

Camwyn Points 21

Pour information, j'ai utilisé la fonction de Dario, mais j'avais besoin de capturer également les étiquettes de formulaire.

Pour ce faire, ajoutez une autre déclaration "si" comme celle-ci :

if(element.htmlFor){
var matches = element.htmlFor.match(/(.+)_\d+/);
if(matches && matches.length >= 2)            // Captures start at [1].
  element.htmlFor = matches[1] + "_" + cur_num;
}

0voto

Danita Points 1407

Si vous avez plusieurs éléments similaires sur une page, il est préférable d'utiliser des classes, et non des identifiants. Ainsi, vous pouvez appliquer des styles à des uls situés dans des conteneurs d'identifiants différents.

0voto

TarranJones Points 159

Je crois que c'est la meilleure façon

var $clone = $("#MainConfig").clone(false);
$clone.removeAttr('id'); // remove id="MainConfig"
$clone.find('[id]').removeAttr('id'); // remove all other id attributes
$clone.appendTo($("#smallConfig")); // add to DOM.

0voto

RAGINROSE Points 526

Voici une solution avec id.

var clone = $("#MainConfig").clone();
clone.find('[id]').each(function () { this.id = 'new_'+this.id });
$('#smallConfig').append(clone);

si vous souhaitez que l'identifiant soit défini dynamiquement, vous pouvez utiliser le compteur au lieu de 'new_'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X