2016-03-22 19 views
0

Die Codezeile oben funktioniert normalerweise, aber nicht, wenn ich es in die Funktion (Daten) zurück von meinem PHP-Skript verschieben. Ich nehme an, dass etwas außerhalb des Geltungsbereichs oder so etwas ist? Hier ist der Code, auf die Grundlagen reduziert.

$('.training_staff_change').on('change', 
    function() { 

     // Post the data. 
     $.post('updatetrainingstaff.php', 
      { 
      } , 
     function (data) { 
      $(this).prop('selectedIndex', 5); 
     } 
     ) 
}); 

Wie ich sage, das ist abgespeckt, der Rest des Codes funktioniert gut. Wenn ich die Zeile aus der Funktion verschiebe und darunter, funktioniert sie einwandfrei und setzt den Selektor wie gewünscht. Ist $ (this) außerhalb des Geltungsbereichs hier oder so? In meinem letzten Code wird der selectedIndex in den Rückgabewert 'data' geändert, aber das ist hier nicht das Problem. Es wird es nicht einmal zu einer geraden "5" ändern.

Antwort

1

Ja, es außerhalb des Gültigkeitsbereichs ist (Sie Ihre Frage selbst beantworten), aber zu lösen diese es so viele Möglichkeiten gibt, ist der einfachste Weg, dies:

$('.training_staff_change').on('change', 
    function() { 
     var that = $(this); 
     // Post the data. 
     $.post('updatetrainingstaff.php', 
      { 
      } , 
     function (data) { 
      that.prop('selectedIndex', 5); 
     } 
    ) 
}); 
+0

Dank. Und danke für diese Lösung, schön und einfach. Ich werde nachlesen, warum das nicht möglich ist, weil es für mich in Reichweite ist, da es alles in der gleichen Funktion hat? – Farflame

+0

Nein, denn wenn Sie eine neue Funktion erstellen (in der sich der selectedIndex-Satz befindet), ändern Sie den Bereich auf diesen Wert. In Ihrem Beispiel ist der Bereich von $ (this) 'die' $ .post() 'Methode, stattdessen die' on() 'Methode –

+0

Oh cool, ich verstehe, danke. Aus irgendeinem Grund dachte ich, dass der Anwendungsbereich in neue Funktionen überging, aber ich sehe jetzt, dass es nicht funktioniert. Danke, ich werde in einigen Minuten deine Antwort als die angenommene Antwort markieren (sie sagt mir, dass ich noch ein paar Minuten warten soll, bevor ich akzeptieren kann). – Farflame

Verwandte Themen