Posté par Cedric, le 15/12/2008 - Technologie
Si vous utilisez jQuery, vous pratiquez certainement la manipulation du DOM. Par exemple, lorsque vous créez des objets à la volée, le DOM se trouve modifié. Malheureusement, jQuery n'intègre pas automatiquement les éléments que vous rajoutez à sa surveillance (listeners).
Travaillons sur un bout de code basique:
<input type="button" id="add" value="add another radio button" />
<input type="radio" name="cool" value="cedric" />
<script language="JavaScript">
$(document).ready(function(){
$(":radio").click(function(){
alert($(this).val());
})
$("#add").click(function(e){
e.preventDefault();
var $v = Math.random(1, 100);
$("#container").append(' value:'+$v+'
');
})
})
</script>
Dans cet exemple, le click sur les éléments que vous ajoutez au fur et à mesure ne déclenche aucune action nativement (à l'inverse de l'élément créé à la base, avec "cedric" comme valeur). C'est un gros problème quand on souhaite ajouter du dynamisme à ses documents tout en bénéficiant des écouteurs globaux.
$(":radio").click(function(){
alert($(this).val());
});
Après:
$(":radio").livequery('click', function(){
alert($(this).val());
});
Et vous pouvez ajouter autant d'éléments identiques au DOM, ils répondront tous de la même manière lorsque vous déclenchez un événement dessus.
<< Page précédente | Page suivante >>