2017-09-24 3 views
0

Ich versuche, eine delay() oder setTimeout innerhalb einer function(), die $(this) verwendet. Ich möchte $(this) verwenden, da dieses Skript für jede Tabellenzeile ausgeführt wird, sodass es dieselbe Zeile als Ziel hat. Ich kann das erreichen, indem ich usw. benutze. Jedoch habe ich gerade Schwierigkeiten, $(this) innerhalb einer Funktion innerhalb einer Funktion zu nennen.

Wenn ich verstehe, wo ich falsch liege, ist es die Tatsache, $(this) würde versuchen, sich von setTimeout zu bekommen? Wenn ja, wie kann ich es haben, damit ich das gleiche $ (das) verwenden kann, das ich benutzt habe?

-Code in Frage:

setTimeout(function() { 
$(this).closest("td").next().find('.tabledit-save-button').click(); 
}, 2000) 

Voll Code:

<script> 
$(document).ready(function() { 
    $(document).ajaxComplete(function() { 
     $('.tabledit-view-mode').on('click', function(e){ 
      $(this).closest("td").next().find('.tabledit-edit-button').click(); 
      $(this).find(".tabledit-input").val("completed"); 
      setTimeout(function() { 
       $(this).closest("td").next().find('.tabledit-save-button').click(); 
      }, 2000) 
     }); 
    }); 
}); 
</script> 

Vielen Dank im Voraus.

+1

Versuchen Variable mit '$ (this)' Wert und verwendet es in 'setTimeout' Funktion einstellen. Wie folgt: 'var that = $ (this); setTimeout (function() {that.closest ....' –

+0

@YasharAliabasi danke, dass du richtig bist :-) – aussiedan

+0

Wenn mein Beitrag helful war, dann melde bitte meinen Kommentar.Vielen Dank –

Antwort

1

Sie können, dass in einer Variablen nehmen und diese Variable anstelle von $(this), wie unten:

<script> 
$(document).ready(function() { 
    $(document).ajaxComplete(function() { 
     $('.tabledit-view-mode').on('click', function(e){ 
      var current = $(this); 
      current.closest("td").next().find('.tabledit-edit-button').click(); 
      current.find(".tabledit-input").val("completed"); 
      setTimeout(function() { 
       current.closest("td").next().find('.tabledit-save-button').click(); 
      }, 2000) 
     }); 
    }); 
}); 
</script> 
+0

Vielen Dank @miliancheda Ihre Antwort war sehr klar und Beispiel zeigte mir genau, wie dies zu erreichen ist. :-) – aussiedan

Verwandte Themen