2012-03-25 9 views
1

私は選択ボックスの塗りつぶしを自動化するjQueryプラグインを作成しようとしていますが、 "each"関数でthisキーワードを使用するのは悩ましいです。コードは次のようになります。jqueryプラグインの "this"要素の範囲

(function($) { 
    $.fn.addOptionsTable2 = function() {   
    options = { 
      values : text [...] 
     }; 
     $.each(options, function(val,text) { 
      this.append(
       $('<option></option>').val(val).html(text) 
     ); 
    }); 
    } 
})(jQuery); 

これはうまくいかないようですが、私はこの問題が「この」参照であると信じています。 どのように私はこの作品を作ることができ、また、 "this"は私のコードで何を参照していますか?

答えて

3

$.each現在のオブジェクト(ループ用)にthisを設定します。

はこのお試しください:

var that = this; 

    $.each(options, function(val,text) { 
     that.append(
      $('<option></option>').val(val).html(text) 
    ); 
+1

を 'それはthis'ソリューションは、これらの状況で非常に流行している=、私はまったく同じ答えましたが、私は同意する – Alp

+0

遅すぎました。 –

+0

私は「自己」を好むが、同じこと。重要なことは、 'this'は* special *であり、各関数オブジェクト呼び出しのために設定されていることです。 (まさにそれが設定されているものは変わる可能性があります) –

関連する問題