0

私はjQueryの初心者なのでthis、ループ内で変数を使用する方法を教えてください。

たとえば。

this.tblsize=10;
$.each([1,2],function(idx,val){
console.log(this.tblsize)
});

出力

undefined
undifined

しかし、出力をとして取得する必要があります10 10

何か問題がありますか?

4

6 に答える 6

2

別のスコープからアクセスするには、クロージャーを利用する必要があります。this

this.tblsize=10;
var self = this;
$.each([1,2],function(idx,val){
    console.log(self.tblsize)
});
于 2013-01-07T11:58:57.553 に答える
1

これを使用しないでください。他の変数名を使用してください。

var tblsize=10;
$.each([1,2],function(idx,val){
console.log(tblsize)
});
于 2013-01-07T11:58:27.897 に答える
0

inside別のスコープであるため、これを無名関数として使用することはできません。

これはうまくいくはずです

    this.tblsize=10;
    var thisref = this;

    $.each([1,2],function(idx,val){
    console.log(thisref.tblsize)
    });
于 2013-01-07T11:57:38.273 に答える
0

次の例を試してみてください:

<ul>
    <li>foo</li>
    <li>bar</li>
</ul>

$( "li" ).each(function( index ) {
  console.log( index + ": "" + $(this).text() );
});

これはあなたの問題を解決するのに役立つかもしれないと思います.

于 2013-01-07T12:01:14.593 に答える
0

this$.each を呼び出す前にのコピーを作成します。$.each 内でthisは、 の要素を参照します$.each()

this.tblsize=10;
var $this = this;
$.each([1,2],function(idx,val){
    console.log($this.tblsize)
});

http://api.jquery.com/each/

于 2013-01-07T12:04:40.823 に答える
0

コードを見てみましょう:

this.tblsize = 10;

ここでは、tblsize値が範囲外に指定されています$.each()

次の場合:

$.each([1,2],function(idx,val){
      console.log(this)
});

ここではメソッドの内部結果スコープを参照するため、&1のような値を取得します。したがって、あなたの場合、次のようなことをすると、それぞれの中にこの名前の変数がないため、次のようなものが確実に得られます。2this$.each()this.tblsizeundefined

$.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
});
于 2013-01-07T12:08:32.433 に答える