私はjQueryの初心者なのでthis
、ループ内で変数を使用する方法を教えてください。
たとえば。
this.tblsize=10;
$.each([1,2],function(idx,val){
console.log(this.tblsize)
});
出力
undefined
undifined
しかし、出力をとして取得する必要があります10 10
。
何か問題がありますか?
私はjQueryの初心者なのでthis
、ループ内で変数を使用する方法を教えてください。
たとえば。
this.tblsize=10;
$.each([1,2],function(idx,val){
console.log(this.tblsize)
});
出力
undefined
undifined
しかし、出力をとして取得する必要があります10 10
。
何か問題がありますか?
別のスコープからアクセスするには、クロージャーを利用する必要があります。this
this.tblsize=10;
var self = this;
$.each([1,2],function(idx,val){
console.log(self.tblsize)
});
これを使用しないでください。他の変数名を使用してください。
var tblsize=10;
$.each([1,2],function(idx,val){
console.log(tblsize)
});
inside
別のスコープであるため、これを無名関数として使用することはできません。
これはうまくいくはずです
this.tblsize=10;
var thisref = this;
$.each([1,2],function(idx,val){
console.log(thisref.tblsize)
});
次の例を試してみてください:
<ul>
<li>foo</li>
<li>bar</li>
</ul>
$( "li" ).each(function( index ) {
console.log( index + ": "" + $(this).text() );
});
これはあなたの問題を解決するのに役立つかもしれないと思います.
this
$.each を呼び出す前にのコピーを作成します。$.each 内でthis
は、 の要素を参照します$.each()
。
this.tblsize=10;
var $this = this;
$.each([1,2],function(idx,val){
console.log($this.tblsize)
});
コードを見てみましょう:
this.tblsize = 10;
ここでは、tblsize
値が範囲外に指定されています$.each()
次の場合:
$.each([1,2],function(idx,val){
console.log(this)
});
ここではメソッドの内部結果スコープを参照するため、&1
のような値を取得します。したがって、あなたの場合、次のようなことをすると、それぞれの中にこの名前の変数がないため、次のようなものが確実に得られます。2
this
$.each()
this.tblsize
undefined
$.each()
したがって、必要なものを取得するには、次のように、循環グローバル オブジェクトを作成し、スコープ外の変数を格納して、メソッド内でアクセスします。
this.tblsize = 10;
// circular global object
var table_size = this;
$.each([1,2],function(idx,val){
console.log(table_size.tblsize); // way 1
console.log($(table_size)[0].tblsize); // way 2
});