我是jQuery的新手。请告诉我如何在循环中使用this
变量。
例如。
this.tblsize=10;
$.each([1,2],function(idx,val){
console.log(this.tblsize)
});
输出
undefined
undifined
但我需要输出为10 10
。
有什么不对吗?
答案 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)
});
答案 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
});