jQuery et clone() sont dans un bateau. jQuery pousse clone(). Qui tombe à l'eau ?

Internet Explorer 7 bien sûr ! Hum, désolé.

Si vous avez l'habitude de cloner des éléments puis de les modifier via la fonction attr(), sachez qu'Internet Explorer 7 modifiera l'original plutôt que l’élément cloné. Ce comportement ennuyeux apparaît depuis jQuery 1.6 sous IE7 (IE6 ?). La raison est que le clonage n'utilise plus innerHTML mais cloneNode directement. Il y à plusieurs solutions :

  • Abandonner le support de IE7
  • Utiliser prop() en lieu et place de attr() (comprenez bien la différence et les implications)
  • Utiliser la propriété javascript directement : $input.get(0).name = 'nouveau';
  • Faire un sale clonage du genre : var $nouveau = $('<tr>'+$ligne.get(0).innerHTML+'</tr>');

Plus d'informations :