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.