J’ai un bouton qui est créé dynamicment, donc j’ai besoin d’utiliser. Vivre sur mon code. Voici un exemple:
$('#send').live('click', function(){ ..... ..... code ..... ..... });
J’utilise la bibliothèque jQuery 1.7.1 et je voulais le changer pour utiliser .on mais cela ne fonctionne pas. Pourquoi est-ce? La syntaxe est-elle différente?
J’ai jeté un œil à la documentation et je n’ai apparemment rien fait de mal. Cela ne me dérange pas de le laisser vivre, mais j’aimerais savoir si je fais quelque chose de mal.
http://api.jquery.com/on/
La syntaxe est-elle différente? Oui. Avez-vous lu toute la page doco .on()
vous êtes lié?
Le résumé suivant sur la manière de passer de .live()
à .delegate()
ou .on()
provient de la page doco .live()
:
$(selector).live(events, data, handler); // jQuery 1.3+ $(document).delegate(selector, events, data, handler); // jQuery 1.4.3+ $(document).on(events, selector, data, handler); // jQuery 1.7+
Donc, dans votre cas, vous voulez:
$(document).on('click', '#send', function(){ // your code here });
Notez qu’idéalement, vous n’utiliserez pas $(document)
, vous utiliserez $(someotherelement)
pour attacher le gestionnaire à un élément plus proche de votre élément ‘#send’. Si vous le pouvez, utilisez l’élément parent direct de ‘#send’ ou, si le parent est créé de manière dynamic, utilisez également son parent.
Pour utiliser la délégation d’événements, .on
nécessite deux sélecteurs, comme .delegate
.
$('some container').on('click', '#send', function() { ... });