44 votes

L'objet n'a pas de méthode 'live' - jQuery

 <script>
$(document).ready(function(){
    $('.delete').live('click', function(e){
        alert('delete');
        e.preventDefault();
    });
});
</script>
<a href='#' id='_1' class='delete'>Delete</a>
 

Me donne une erreur:

Uncaught TypeError: Object [objet Object] n'a pas de méthode 'en direct'

Je ne vois tout simplement pas le problème?

122voto

diggersworld Points 5051

.live() est une fonction déconseillée (à partir de 1.7+) et complètement supprimée de jQuery 1.9+.

Vous pouvez plutôt utiliser les méthodes .on() ou .bind() :

http://api.jquery.com/on/
http://api.jquery.com/bind/

13voto

Dave Methvin Points 1153
  1. Si l'appel à l' .live() est à l'intérieur de votre propre code, il suffit de la changer en .on() en utilisant les règles qui s'affichent à http://api.jquery.com/live.

  2. Si le code est dans un tiers plugin jQuery, utiliser le jQuery Migrate plugin pour restaurer .live() jusqu'à ce que l'auteur met à jour son plugin: https://github.com/jquery/jquery-migrate#readme.

  3. Dans les sites de production, ne pas utiliser des Url de référence de la "dernière" version de jQuery comme http://code.jquery.com/jquery-latest.js ou http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js depuis ils seront automatiquement mis à jour quand une nouvelle version de jQuery est sorti et votre site va se briser si elle n'est pas compatible.

3voto

Learner Points 1484

Si vous utilisez jQuery 1.7+, utilisez on(...) au lieu de live(...) .
Vérifiez ceci: http://api.jquery.com/on/

3voto

Jinn Points 141

Il existe un scénario où ni .on (), ni .bind () ne fonctionneront pas: lorsque l'élément n'existe pas lorsque le gestionnaire d'événements est ajouté. Et c'est ce que live () a fait.

3voto

user2466160 Points 21

Voir sur http://api.jquery.com/live/

vieux

 $("a.offsite").live("click", function(){ alert("Goodbye!"); });                // jQuery 1.3+
$(document).delegate("a.offsite", "click", function(){ alert("Goodbye!"); });  // jQuery 1.4.3+
 

Nouveau

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X