2016-05-03 20 views
1

Ich habe Spannweite in einem LI mit einer Klasse von removeFile, wenn geklickt wird, sollte es eine Datei mit jQuery $.get entfernen und dann nach dem erfolgreichen Löschen sollte es die fadeout die enthaltende LI. Ich kann nicht herausfinden, warum das nicht funktioniert, ich kann es erhalten (Daten), aber nicht einer Variablen zuweisen oder den Befehl fadeOut() ausführen.Fadeout nach Jquery Funktion erhalten

$('#files').on('click', '.removeFile', function (event) { 
    event.preventDefault(); 
    var fileUrl = $(this).data('file-url'); 
    if (confirm('Are you sure you want to delete this file?')){ 
     $.get('process.php', {'remove-file':fileUrl}, function(data){ 
      if(data=='true'){ 
       $(this).parent().fadeOut(); 
      } 
     }); 
    } 
}); 

<li class="file"> 
<span class="file" data-file-url="http://demo.com/filemanager/files/test.txt" title="test.txt">test.txt</span> 
<span class="removeFile" data-file-url="/files/test.txt"></span> 
</li> 

Antwort

1

Innen ajax Callback-Funktion bezieht sich auf this jqXHR Objekt, so muss er sich außerhalb des ajax Anruf als Variable definieren oder die context option eingestellt.

$('#files').on('click', '.removeFile', function (event) { 
    event.preventDefault(); 
    var $this = $(this); 
    var fileUrl = $this.data('file-url'); 
    if (confirm('Are you sure you want to delete this file?')){ 
     $.get('process.php', {'remove-file':fileUrl}, function(data){ 
      if(data=='true'){ 
       $this.parent().fadeOut(); 
      } 
     }); 
    } 
}); 
0

this in get() Referenzierung nicht .removeFile. this bezieht sich auf xhr Objekt im Rückruf von get().

$('#files').on('click', '.removeFile', function (event) { 
    event.preventDefault(); 
    var li = $(this).parent(); //added this line 
    var fileUrl = $(this).data('file-url'); 
    if (confirm('Are you sure you want to delete this file?')) { 
     $.get('process.php', { 'remove-file': fileUrl }, function (data) { 
      if (data == 'true') { 
       li.fadeOut(); //changed this line 
      } 
     }); 
    } 
});