我是 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)
});
this
在调用 $.each 之前创建一个副本。在 $.eachthis
中将引用$.each()
.
this.tblsize=10;
var $this = this;
$.each([1,2],function(idx,val){
console.log($this.tblsize)
});
只需尝试以下示例:
<ul>
<li>foo</li>
<li>bar</li>
</ul>
$( "li" ).each(function( index ) {
console.log( index + ": "" + $(this).text() );
});
我认为这可以帮助您解决问题。
让我们看看你的代码:
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
});