如何使用jQuery访问它?

时间:2013-01-07 11:56:14

标签: jquery

我是jQuery的新手。请告诉我如何在循环中使用this变量。

例如。

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

输出

undefined
undifined

但我需要输出为10 10

有什么不对吗?

6 个答案:

答案 0 :(得分:2)

您需要使用closure才能从其他范围访问this

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

答案 1 :(得分:1)

请不要使用此功能,请使用任何其他变量名称:

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

答案 2 :(得分:0)

你不能使用这个inside匿名函数,因为它是另一个范围。

这应该有效

    this.tblsize=10;
    var thisref = this;

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

答案 3 :(得分:0)

只需尝试以下示例:

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

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

我认为这可以帮助您解决问题。

答案 4 :(得分:0)

在调用$ .each之前创建this的副本。在$ .each this内将引用$.each()

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

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

答案 5 :(得分:0)

让我们看看您的代码:

this.tblsize = 10;

此处,tblsize值已在$.each()

范围之外指定

接下来,如果你这样做:

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

您将获得1&amp; 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
});