Jquery .on versus .live

Je sais que .live() est maintenant obsolète, mais je n’arrive pas à le modifier et à en conserver les fonctionnalités.

J’ai juste une petite question sur la fonction .on() dans jQuery. J’utilise actuellement .live() ici

Ainsi:

 $('table tr th').live("click", function() { }); 

Mais, lorsque j’essaie de remplacer .live() par .on() cela ne fonctionne plus comme .live() .

J’ai essayé de mettre en

 $('table tr th').on("click", function() { }); 

aussi bien que

 $('table tr').live("click", "th", function() { }); 

et

 $('table tr').delegate("th", "click", function() { }); 

mais en vain.

Pourquoi est-ce et quelles mesures puis-je prendre pour le faire fonctionner correctement?

La fonction on() nécessite une mise à jour syntaxique, vous devez modifier votre code pour:

 $('body').on("click", "table tr th", function()... 

Consultez cet article pour plus d’informations: http://www.andismith.com/blog/2011/11/on-and-off/

Essaye ça:

 $('table tr th').live("click", function() { 

devrait être

 $(document).on("click", "table tr th", function() { 

C’est ainsi que vous .live exactement l’appel .live . Vous pouvez bien sûr limiter votre sélecteur de document à quelque chose de plus significatif en fonction de votre structure DOM.

Modifier:

Juste pour clarifier, dans votre exemple, vous devez utiliser $(document).on(... car la table n’a pas de parents et est remplacée pendant la vie de votre page.

Assurez-vous que l’élément sélectionné (le th / tr) existe lors du chargement initial de la page. Le nouveau fichier .on ne fonctionnera pas si ce sélecteur est ajouté ultérieurement au DOM.

Essayer

 $('body').on('click', 'thesSelectorForYourTriggerElement', function(){ //callback }); 

Je devine en quelque sorte que vous ajoutez des éléments tr dans votre tableau, pas th .

 $('table').on("click", "tr th", function(){});