0
votes

La fonction JQuery ne cache pas un élément à la fin de la demande d'obtention

J'essaie d'utiliser jQuery pour envoyer une demande d'obtention au serveur, et je pense que cela se passe correctement, car un enregistrement est supprimé, mais je veux masquer l'élément cliqué après la fin de la demande.

Voici un exemple d'extrait HTML, qui est généré via un modèle jinja2 Modèle: xxx

la photo contenue dans le svg Tag est celle d'une poubelle, et j'ai un script JQuery qui initie un Demande d'accès à un serveur Python pour supprimer l'enregistrement avec la valeur d'identité d'identifiant . : xxx

L'idée est que si vous cliquez sur l'icône que vous avez demandé si vous souhaitez supprimer l'enregistrement correspondant, et si vous cliquez sur OK, la demande d'obtention est initiée. .

Dès maintenant, lorsque cela se produit, l'enregistrement est supprimé, mais la vue sur la page ne change pas sauf si je l'actualise. En supposant que cela soit le comportement correct, je voudrais simplement masquer la ligne contenant l'icône, qui est l'idée derrière le script jQuery, mais la ligne n'est pas cachée et je ne sais pas où mon code est incorrect.

aimerait savoir ce que je fais mal.


0 commentaires

3 Réponses :


1
votes

Vous devez enregistrer la référence à l'extérieur en utilisant un Fonction de flèche (le Ceci à l'intérieur de la fonction de rappel pour jquery.get n'est pas identique à la valeur de cette à l'intérieur de la fonction d'écouteur d'événement). xxx


0 commentaires

1
votes

Si vous souhaitez utiliser Ceci code> pour accéder à l'élément, il doit référence à la fonction extérieure afin. Il vous suffit de vous déplacer $ (this) .closest ('TR'). Masquer () Code> Extérieur jQuery Callback

$("svg").click(function(){
  var id = $(this).attr('id');
  decision = window.confirm("Are you sure you want to delete this class?");
  if (decision === true) {
    $(this).closest('tr').hide()
    var url = '/classes/' + id + '/delete';
    jQuery.get(url, function(){
      console.log("It worked.");
      ;
    });
  }
 });

});


0 commentaires

1
votes

Essayez ceci, j'espère que cela vous aidera

$("svg").click(function() {
  // Var definition
  var $this = $(this);
  var id = $this.attr('id');

  // Get confirmation
  decision = window.confirm("Are you sure you want to delete this class?");

  // Check the decision
  if (decision) {
    var url = '/classes/' + id + '/delete';

    // Send GET request
    $.get(url, function() {
      // You can hide or remove the table row
      $this.closest('tr').hide();
    });
  }
 });


0 commentaires