Salut @ tous !

J'ai une page qui affiche toutes les photos uploadées sur mon site.
Il y a aussi quelques boutons qui permettent de filtrer ces photos selon différents critères

En cliquant sur une photo une "bootstrap modal popup" s'affiche.

En cliquant sur un des boutons pour filtrer les photos, celles-ci sont rechargées via Ajax (jusqu'ici tout va bien...).
Mais une fois les photos rechargées les boutons de filtre ne fonctionnent plus !

$( 'a.show' ).live( 'click', function( e )
    {
    $( '#show_big_photo_dialog_box' ).modal( 'show' );
    e.preventDefault();

    } );

Voici l'erreur affichée dans la console :

Uncaught TypeError: Object [object Object] has no method 'live' init_nodal.js:53

Merci de m'aider ...

6 réponses


Pewel-OutOfNutella
Réponse acceptée

Tu as quoi comme version de jQuery ?
Live a été remove sur les versions > 1.9

--> http://api.jquery.com/live/

Tu peux utiliser le delegate si tu veux, comme ceci :

$(document).delegate( 'a.show', 'click', function() {
  //....
});

C'est équivalent au code ci-dessous mais le delegate est plus propre je trouve

$( document ).on( 'click', 'a.show', function() {
  //...
});

Est ce que c'est vraiment la même chose ? avec le on(), on a l'avantage de pouvoir faire un off() pour supprimer le listener. Est ce possible avec le delegate ?

OK, d'après la doc, ils disent qu'il vaut mieux utiliser .on() pour jQuery 1.7+.

As of jQuery 1.7, .delegate() has been superseded by the .on() method. For earlier versions, however, it remains the most effective means to use event delegation.

cf http://api.jquery.com/delegate/

Oui après c'est une question d'habitude...
Les deux font la même chose mais il est vrai qu'apparement ce serait mieux d'utiliser le on.

A voir...

Edit :
haha, énorme !
Dans le code source de jQuery :

delegate: function( selector, types, data, fn ) {
    return this.on( types, selector, data, fn );
}

Donc finalement, l'une ou l'autre, c'est pareil :D

Comment permettre aux devs de se prendre la tête pour rien ...

Ca sent le code historique, la méthode delegate() qui a été réécrite avec le .on() à partir de 1.7.