2009-01-14 11 views
1

J'ai du contenu du serveur utilisant la fonction $ .ajax(). J'essaie de remplacer un élément avec ces données, puis de le manipuler. Voici le code:Evénement jQuery sur les données traitées par le serveur

$.ajax({ 
    type: "GET", 
    url: "smpl.php", 
    success: function(servmsg){ 
     $('#panelInfo').replaceWith('<p>' + servmsg + '</p>'); 
    } 
}); 

réponse du serveur est:

<select id="years"> 
    <option>2008</option> 
    <option>2009</option> 
</select> 

lorsque je tente un événement là-dessus, il ne fait rien, par ex:

$('#years').change(function() { //or .click() 
    //do something 
}); 

Répondre

3

Vous devez changer votre code:

$.ajax({ 
    type: "GET", 
    url: "smpl.php", 
    success: function(servmsg){ 
     $('#panelInfo').replaceWith('<p>' + servmsg + '</p>'); 
     $('#years').change(function() { //or .click() 
      //do something 
     }); 
    } 
}); 

Alternativement, vous pouvez garder votre original code d'appel ajax, et utiliser livequery comme ceci:

$('#years').livequery('change', function() { //or .click() 
    //do something 
}); 

Ensuite, lorsque vous avez inséré les #years bloc, l'événement change est automatiquement enregistré.

0

Le code de liaison d'événements devrait être à l'intérieur de la fonction «succès», il sera exécuté après #years est ajouté à la page. Sinon, jquery cherche #years et ne peut pas le trouver, et aucune liaison n'est faite.

0

Si vous pouvez utiliser jquery 1.3 (version actuelle), regardez dans la nouvelle méthode .live().

Questions connexes