2016-03-22 8 views
0

上記のコード行は通常動作しますが、私のPHPスクリプトからの関数(データ)戻り時には移動しません。私は何かが範囲外かそれとも何かのものであると仮定していますか?ここにコードがあります。

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

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

私が言うように、それは削除され、残りのコードはうまくいきます。関数から行を移動して下に移動すると、関数は正常に動作し、必要に応じてセレクタを設定します。 $(これ)はここか何かの範囲外ですか?最終的なコードでは、selectedIndexが 'data'戻り値に変更されますが、ここで問題にはなりません。それはまっすぐに '5'に変わることさえありません。

答えて

1

はい、それは(あなたあなたの質問に答えて自己)スコープの外だが、非常に多くの方法があり、これを解決するために、最も簡単な方法はこれです:

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

感謝。そして、そのソリューションに感謝して、素敵でシンプルです。それが同じ機能のすべてであるので、私が範囲に入っているので、範囲外です。 – Farflame

+0

いいえ、新しい関数(selectedIndex文があるところ)を作成すると、スコープがその関数に変更されるためです。あなたの例では、 '$(this)'のスコープは 'on()'メソッドの代わりに '$ .post()'メソッドです。 –

+0

ああ、ありがとう、ありがとう。何らかの理由で私はスコープが新しい機能に落ちたと思っていましたが、今はそうではないことがわかります。ありがとうございます。私は数分後にあなたの回答を受け入れられる回答にします(私が受け入れる前に数分待つように指示しています)。 – Farflame