.attr (‘vérifié’, ‘vérifié’) / .attr (‘vérifié’, ‘vrai’) n’ajoutant pas d’atsortingbut en HTML

Ceci est mon JavaScript, en utilisant jQuery:

$("#E_DIV_H input[value='E,F']").attr('checked', 'checked'); var data = $('#E_DIV_H').html(); $('#copy').html(data); 

Lorsqu’il copie les données d’un

( #E_DIV_H ) vers un autre DIV ( #copy ), il désélectionne la case à cocher, qui devrait déjà être cochée à cause du code suivant!

 $("#E_DIV_H input[value='E,F']").attr('checked', 'checked'); 

En utilisant Firebug, je constate que .attr('checked', 'checked') coche la case sans append l’atsortingbut.

Existe-t-il une solution qui fonctionne avec plusieurs navigateurs? J’utilise jQuery 1.4.2.

Pour mettre à jour l’atsortingbut booléen tel que checked dans la version jQuery <1.6, vous devez utiliser la setAtsortingbute() javascript setAtsortingbute() , par exemple:

 $("#E_DIV_H input[value='E,F']")[0].setAtsortingbute('checked', true); 

Si vous avez plusieurs éléments à cibler, vous devez effectuer une itération dans la collection, par exemple:

 var els = document.querySelectorAll("#E_DIV_H input[value='E,F']"); for (var i=0; i < els.length; i++) { els[i].setAttribute("checked", true); } 

Si vous voulez copier un élément, utilisez .clone() . Travailler avec HTML est compliqué.

 $('#copy').replaceWith( $('#E_DIV_H').clone().attr('id', 'copy') ); 

Quoi qu’il en soit, la raison pour laquelle cela ne fonctionne pas est probablement parce que (comme vous le savez) .prop() été introduit dans 1.6.0; avant cela, .attr() faisait son travail et définissait probablement la propriété à la place de l’atsortingbut.