Nous pouvons également essayer d'étendre le prototype jQuery ( $.fn
) pour fournir une nouvelle méthode qui peut être enchaînée à la fonction jQuery().
Voici une extension de la solution de @pimvdb pour fournir une fonction qui copie tous les attributs
L'utilisation serait la suivante :
$(destinationElement).copyAllAttributes(sourceElement);
La fonction d'extension peut être définie comme suit :
(function ($) {
// Define the function here
$.fn.copyAllAttributes = function(sourceElement) {
// 'that' contains a pointer to the destination element
var that = this;
// Place holder for all attributes
var allAttributes = ($(sourceElement) && $(sourceElement).length > 0) ?
$(sourceElement).prop("attributes") : null;
// Iterate through attributes and add
if (allAttributes && $(that) && $(that).length == 1) {
$.each(allAttributes, function() {
// Ensure that class names are not copied but rather added
if (this.name == "class") {
$(that).addClass(this.value);
} else {
that.attr(this.name, this.value);
}
});
}
return that;
};
})(jQuery);
Un exemple est disponible à l'adresse suivante http://jsfiddle.net/roeburg/Z8x8x/
J'espère que cela vous aidera.
2 votes
Vous êtes sûr de vouloir copier
id
?0 votes
S'il s'agit de copier le
id
vous aurez une copie de l'attributid
.0 votes
Peut-être pourriez-vous expliquer pourquoi vous avez besoin de cela ? Il y a probablement une meilleure solution.
0 votes
Ne vous inquiétez pas, je ne copierai pas l'attribut ID ou je supprimerai l'attribut ID en double.
0 votes
Parce que je ne veux pas oublier un attribut si je copie chacun d'eux à la main. De plus, je ne savais pas comment faire, alors je voulais demander pour pouvoir apprendre à le faire à l'avenir.