jquery on ne fonctionne pas, mais fonctionne avec la bibliothèque 1.7.1

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() { ... });