2010-01-23 3 views
1

J'essaie d'utiliser une requête AJAX pour charger des informations dans une table à l'aide de JQuery. Je peux facilement charger le contenu, mais j'ai de la difficulté à ajouter des gestionnaires d'événements pour appliquer un style au contenu chargé.Comment déclencher des gestionnaires d'événements après le chargement du contenu AJAX dans JQuery

J'applique un widget de striping à la table. Toutefois, lorsque ma requête AJAX revient et que mes informations sont ajoutées au corps de la table, le style n'est pas appliqué.

Le tutoriel JQuery mentionne l'utilisation de l'événement load pour gérer cela, mais je n'arrive pas à le faire fonctionner.

Toute aide serait appréciée.

 
$(document).ready(function(){ 
    $("#cowTable").tablesorter(); 
    addTableStriping(); 
}); 

function addTableStriping(){ 
    $("#cowTable").tablesorter({ 
     // striping looking 
     widgets: ['zebra'] 
    }); 
}; 

$(function(){ 
    $("#loadCowsButton").click(function(){ 
     $.post("loadCows.php", "scottm", function(xml) { 
      $("#cowTable tbody").append(xml); 
     }); 
    }); 
}); 

+0

Voir aussi http://stackoverflow.com/questions/1875514/jquery-ready-event-not-fired-on-partial-page-load – Bryce

Répondre

2

que j'ai trouvé une solution pour cela. Vous devez déclencher "applyWidgets" après la mise à jour. Merci pour toute l'aide de tout le monde, je n'aurais pas trouvé ça sans votre aide.

 
$(function(){ 
    $("#loadCowsButton").click(function(){ 
     $.post("loadCows.php", "scottm", function(xml) { 
      $("#cowTable").append(xml); 
      $("#cowTable").trigger("update"); 
      $("#cowTable").trigger("applyWidgets") 
     }); 
    }); 
}); 
1

Vous pourriez vouloir essayer le Livequery Plugin

Recherche en direct utilise la puissance des sélecteurs jQuery par des événements de liaison ou callbacks de tir pour les éléments correspondants auto-magie, même après que la page a été chargée et les DOM mis à jour .

1

C'est ce que vous devez faire:

Je l'ai trouvé sur le tablesorter website.

Le plus long et le plus court est que vous devez appeler $("#cowTable").trigger("update"); après avoir ajouté les données. Pourquoi ne pas simplement l'appeler dans le rappel AJAX?

+0

Quel élément dois-je lier le direct? Et quel événement devrait-il écouter? – Scottm

+0

J'ai mis à jour ma réponse. –

+0

Merci, je vais essayer cela plus tard et je vous ferai savoir comment je m'entends. – Scottm

1

$(function(){ 
    $("#loadCowsButton").click(function(){ 
     $.post("loadCows.php", "scottm", function(xml) { 
      $("#cowTable tbody").append(xml); 
      addTableStriping(); // <-- here 
     }); 
    }); 
}); 
+0

Cela ne fonctionne pas, je l'ai déjà essayé. – Scottm

+0

@Scottm Eh bien, cela devrait fonctionner ... Qu'est-il arrivé quand vous l'avez essayé? – nickf

0

cela devrait le faire ..

$(function(){ 
    $("#loadCowsButton").click(function(){ 
     $.post("loadCows.php", "scottm", function(xml) { 
      $("#cowTable tbody").append(xml); 
      $("#cowTable").trigger("update"); 
     }); 
    }); 
}); 
+0

Peut-être qu'il serait sage de regarder les réponses des autres avant d'écrire les vôtres. –

+0

Point bien pris. J'avais ouvert la fenêtre et jusqu'à ce que je réponde, vous (et les autres) avez déjà répondu ... Je ne l'ai pas supprimé car c'était une réponse complète (code complet) –

Questions connexes