Changer le type de nœud

En utilisant jQuery, il est possible de changer tous les éléments correspondants à un type différent? Par exemple, puis-je sélectionner toutes les étiquettes ( $("a") ) et les modifier en input s?

Non, vous ne pouvez pas le modifier, mais vous pouvez les remplacer par un nouvel élément à l'aide de la replaceWith() [docs] .

 $("a").replaceWith("<input>"); 

Exemple: http://jsfiddle.net/7mAtX/

S'il existe des attributs que vous souhaitez conserver, vous devrez les configurer manuellement.

 $("a").replaceWith(function() { return $("<input>",{'class':this.className, value:this.innerHTML }); }); 

Exemple: http://jsfiddle.net/7mAtX/1/

La modification d'un élément A sur un élément INPUT ne modifie pas le type, il modifie le tagName . Selon la spécification DOM 2 Core , le tagName d' un élément est en lecture seule, donc non, vous ne pouvez pas le configurer.

Cependant, vous pouvez remplacer un élément par un élément différent, à condition qu'il soit valide dans le DOM.

 $("a").each( function() { this.replaceWith( $("<input>").html( this.innerHTML() ) ); });