2009-10-13 5 views
1

J'utilise un chargement assez simple de JQuery Ajax et ça marche bien partout sauf pour un élément. La zone est chargée une fois le chargement de la page terminé, puis lie tous les liens de suppression à une soumission ajaxform. Cela fonctionne 100% jusqu'à ce que le bouton de suppression est utilisé. Le contenu se recharge correctement mais la reliaison semble se produire avant qu'il ne soit complètement chargé car il ne redéfinit pas les liens de suppression. La vérification de la taille de la collection d'éléments montre qu'elle inclut toujours l'élément supprimé (par exemple Affiche 5 quand il n'y en a que 4).Jquery Ajax Chargement du rappel avant le chargement terminé

Voici le code:

function AjaxLoadCostActivities(CallBack) { 
    ShowAjaxProgressIndicator(id_CostActivitiesListing); 
    id_CostActivitiesListing.load(url_LoadCostActivities, CallBack); 
} 

function PrepareCostActivitiesForm() { 
    // Submits the form for the delete image button 
    $("a.CostActivityDeleteImage").click(function() { 
     if (confirm("Are you sure you want to delete this record?")) { 
      $(this).parent().ajaxSubmit({ 
       target: id_CostActivitiesListing, 
       success: AjaxLoadCostActivities(PrepareCostActivitiesForm) 
      }); 
      return false; 
     } 
     return false; 
    }); 
} 

// This is the call that loads the content on page load 
// CostActivitiesStartup is just a function that does some unrelated stuff but also 
// calls PrepareCostActivitiesForm to prepare the delete forms. 
AjaxLoadCostActivities(CostActivitiesStartup); 

Répondre

1

Le moyen le plus simple serait probablement d'utiliser les événements live de jQuery. Ceux-ci sont automatiquement rebondis lorsque du nouveau contenu est injecté dans le document. Au lieu de cette ligne:

$("a.CostActivityDeleteImage").click(function() { 

Vous pouvez utiliser ceci:

$("a.CostActivityDeleteImage").live('click', function() { 
0

Dans ce morceau de code, qu'est-ce ShowAjaxProgressIndicator faire?

function AjaxLoadCostActivities(CallBack) { 
    ShowAjaxProgressIndicator(id_CostActivitiesListing); 
    id_CostActivitiesListing.load(url_LoadCostActivities, CallBack); 
} 

Est-ce que ShowAjaxProgressIndicator exécuter du code asynchrnous qui devrait faire l'.load sur un rappel au lieu immédiatement après?

+0

ShowAjaxProgressIndicator montre juste une image de chargement. –

Questions connexes