5 votes

Comment lier un événement après un succès ajax dans jQuery

Voici donc mon code :

$(document).ready( function() {
$('#form').bind('change', function(){
    $.ajax({
    type: 'get',
    url: 'api.php',
    data: 'task=getdirs&formname='+$('#form').attr('value'),
    dataType: "text",
    success: function (html){
        $('#chdir').html(html);
        $('#chdir select').bind('change', getDirs());
        }
    });
});
function getDirs(){
}})

#form ici a un <select> élément. L'appel ajax renvoie un morceau de html avec un nouvel élément <select> élément.
Cela fonctionne bien : dans le #chdir div, j'obtiens un nouvel élément de liste déroulante. Mais l'événement à l'intérieur de l'élément success ne se déclenche qu'une seule fois. Ensuite, cet événement ne fonctionne plus du tout.
Que puis-je faire pour que le nouveau <select> fonctionne-t-il de la même manière que le premier ?

0voto

Nendrel Points 37

A partir de l'API jQuery :

Depuis jQuery 1.7, la méthode .live() est obsolète. Utilisez .on() pour attacher des gestionnaires d'événements. Les utilisateurs d'anciennes versions de jQuery doivent utiliser .delegate() de préférence à .live().

Vous devez donc utiliser .delegate() si vous travaillez avec une version de jQuery antérieure à 1.7.

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

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