web-dev-qa-db-fra.com

TypeError: $ (...). Live n'est pas une fonction

J'ai un problème avec JQuery 1.9.1. Je l'ai cherché mais cela n'a pas résolu mon problème.

    $('.sm2_expander').live('click', function() {
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed');
    return false;
});

Tout le monde a dit que "use 'on' function" mais cette fois, mon code ne fonctionne jamais.

$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); }); 

Edit: Voici ma page d’utilisation: lien déplaçable

8
Enes Pekkaya

Dans votre exemple, vous avez utilisé le sélecteur a.offsite, mais aucun élément ne correspond à ce sélecteur dans votre page. Cela pourrait être la raison pour laquelle cela ne fonctionne pas.

$(function(){
    $(document).on('click', '.sm2_expander', function(){
        alert('bye');
        $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed');
    })
})

Je pense que vous pouvez raccourcir ceci à

$(function(){
    $(document).on('click', '.sm2_expander', function(){
        $(this).closest('li').toggleClass('sm2_liOpen sm2_liClosed');
    })
})
14
Arun P Johny

.live () a été introduit dans jQuery 1.3, il ne fonctionnera donc pas avec les versions précédentes.

.live () est également déconseillé depuis jQuery 1.7.

Les alternatives sont .on () et .delegate ()

Voir question connexe. JQuery 1.9 .live () n’est pas une fonction de la migration du code existant.

J'ai utilisé "jquery-1.8.3.min.js" et mon problème a été résolu.

7
Ipsita Rout

Essayez ceci: -http://jsfiddle.net/trdb9/

JS: -

$(document).on("click", "a.offsite", function () {
    alert("Goodbye!");
});

HTML: -

<a class="offsite">Click Me</a>
6
Aditya Singh

Vous devez utiliser jquery-migrate-1.1.1.min.js ou supérieur. Je suppose qu’il y a de grands changements à venir dans jquery, le premier étant de faire en sorte que tous ceux qui ont utilisé .live trouvent de nouvelles façons de faire. 

Quoi qu'il en soit, essayez cela et cela devrait fonctionner.

3
The Lone Coder

Essayez de remplacer live par on dans votre code.

 $('.sm2_expander').on('click', function() {
    $(this).parent().parent().toggleClass('sm2_liOpen').toggleClass('sm2_liClosed');
    return false;
});
2
Mohammad Adil

Si vous avez un site actif, je vous recommanderai d'utiliser jQuery Migrate

https://github.com/jquery/jquery-migrate/

Il ajoutera automatiquement les fonctions obsolètes mais nécessaires.

0
Tofeeq