2010-04-30 3 views
1

Je suis en train d'implémenter une fonction "Suppression rapide" dans une page que je crée. La façon dont cela fonctionne est la suivante:JQuery ajax aide à la réussite

1: Vous cliquez sur le bouton "supprimer" dans la ligne du tableau pour l'enregistrement que vous souhaitez supprimer. 2: La page envoie une requête à la page ajax et renvoie un message de «oui» réussi ou un message d'échec de «non».

Mon problème est que si je reçois un message de «oui», je veux cacher la ligne pour cet enregistrement. J'ai un problème "trouver" la ligne en utilisant JQuery.

Voici mon code jquery:

$(document).ready(function(){ 

$(".pane .btn-delete").click(function(){ 

    var element = $(this); 
    var del_id = element.attr("id"); 
    var dataString = 'action=del&cid=' + del_id; 

    if(confirm("Are you sure you want to delete this content block?")) 
     { 
     $("#msgbox").addClass('ajaxmsg').text('Checking permissions....').fadeIn(1000); 

     $.ajax({ 
      type: "get", 
      url: "ajax/admArticles_ajax.php", 
      data: dataString, 
      success: function(data){ 
       switch(data) 
       { 
        case "yes": 
         $("#msgbox").addClass('ajaxmsg').text('Deleting content block....').fadeIn(1000); 

         $(this).parents(".pane").animate({ backgroundColor: "#fbc7c7" }, "fast") 
         .animate({ opacity: "hide" }, "slow") 

        break 
        case "no": 
         $("#msgbox").removeClass().addClass('error').text('You do not have the correct permissions to delete this content....').fadeIn(1000); 
        break 
        default: 
        }; 
       } 
     }); 

    } 
    return false; 
}); 

});

Ce sont les lignes de code que j'utilise pour masquer la ligne mais cela ne fonctionne pas car je ne pense pas que $ (this) .parents (". Volet") trouve l'élément.

$(this).parents(".pane").animate({ backgroundColor: "#fbc7c7" }, "fast") 
         .animate({ opacity: "hide" }, "slow") 

Toute aide serait grandement appréciée. Merci ...

+0

Ce n'est pas l'opacité qui me cause des problèmes. C'est le $ (this) .parents (". Volet"). Il ne peut pas trouver la ligne de coeurs à supprimer. Si je place le code ci-dessus en dehors de l'instruction "switch", il cache correctement la ligne correcte. Je ne suis pas sûr si j'ai besoin de passer la ligne à la fonction "succès" – Jason

+0

Si placer le code en dehors de l'instruction switch (probablement encore dans le rappel 'succès') le fait fonctionner, il semblerait que le commutateur est le problème. Avez-vous vérifié la valeur de 'data' qui est retournée? – user113716

+0

Salut patrick, oui les données retournent la chaîne "oui". C'est juste que l'utilisation de $ (this) .parents (".pane") dans l'instruction switch ne trouve pas la bonne ligne. Si je change le code à $ (". Volet") il supprimera toutes les lignes de la table montrant qu'il fonctionne. Ce n'est pas correct cependant parce que je veux seulement enlever la rangée une. – Jason

Répondre

3

En un rappel Ajax, this ne fait pas référence à votre élément qui a géré l'événement.

Vous en avez déjà une référence dans votre gestionnaire d'événements, appelé element. Just do:

element.parents(".pane").animate({ backgroundColor: "#fbc7c7" }, "fast") 
        .animate({ opacity: "hide" }, "slow") 
0

Je ne sais pas, mais je suis assez certain que opacity est une valeur numérique de 0 à 1.

Ainsi, vous devriez changer votre ligne pour être .animate({ opacity: "0" }...