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