这里面 $(this)
This inside $(this)
我遇到了以下问题:
function Conclude (thing){
this.quant = thing.find('#quantity_material').val();
this.thing = thing;
this.material =[];
this.finish = [];
this.make = function (){
var i=0;
this.thing.each(function(){
this.material [i]= $(this).find('#material_val').val();
//Conclude.material doesn't work either
i++;
});
}
}
我想从几个 table 中分配 conclude.material
一个输入的值,这样 conclude.material[1]
就是第一个 table 的 #material_val
的值] 等等。问题是当我写这个的时候,它没有引用 .each()
.
里面的函数 conclude
我做错了什么?
JS 中的每个 function
语句都有自己的 this
变量。您有两个函数,一个称为 Conclude
,另一个是匿名函数(实际上有两个匿名函数,但我要解释的内容仍然适用)。
你的错误在这里:
this.thing.each(function(){
-> this
没有 "belong" 到 Conclude
的功能。属于匿名函数。
最简单的方法,至少对你来说,是改变匿名函数的作用域,使匿名函数中的 this
指向外部的 Conclude
函数。看到您已经在使用 jQuery
,请使用 jQuery.proxy
方法。
代码:
function Conclude (thing){
this.quant = thing.find('#quantity_material').val();
this.thing = thing;
this.material =[];
this.finish = [];
this.make = $.proxy(function (){
this.thing.each($.proxy(function(index, item){
this.material[index] = $(item).find('#material_val').val();
}, this));
}, this);
}
试试这个,很简单。
function Conclude (thing){
var _this = this;
this.quant = thing.find('#quantity_material').val();
this.thing = thing;
this.material =[];
this.finish = [];
this.make = function (){
var i=0;
this.thing.each(function(){
_this.material [i]= $(this).find('#material_val').val();
i++;
});
}
}
我遇到了以下问题:
function Conclude (thing){
this.quant = thing.find('#quantity_material').val();
this.thing = thing;
this.material =[];
this.finish = [];
this.make = function (){
var i=0;
this.thing.each(function(){
this.material [i]= $(this).find('#material_val').val();
//Conclude.material doesn't work either
i++;
});
}
}
我想从几个 table 中分配 conclude.material
一个输入的值,这样 conclude.material[1]
就是第一个 table 的 #material_val
的值] 等等。问题是当我写这个的时候,它没有引用 .each()
.
conclude
我做错了什么?
JS 中的每个 function
语句都有自己的 this
变量。您有两个函数,一个称为 Conclude
,另一个是匿名函数(实际上有两个匿名函数,但我要解释的内容仍然适用)。
你的错误在这里:
this.thing.each(function(){
-> this
没有 "belong" 到 Conclude
的功能。属于匿名函数。
最简单的方法,至少对你来说,是改变匿名函数的作用域,使匿名函数中的 this
指向外部的 Conclude
函数。看到您已经在使用 jQuery
,请使用 jQuery.proxy
方法。
代码:
function Conclude (thing){
this.quant = thing.find('#quantity_material').val();
this.thing = thing;
this.material =[];
this.finish = [];
this.make = $.proxy(function (){
this.thing.each($.proxy(function(index, item){
this.material[index] = $(item).find('#material_val').val();
}, this));
}, this);
}
试试这个,很简单。
function Conclude (thing){
var _this = this;
this.quant = thing.find('#quantity_material').val();
this.thing = thing;
this.material =[];
this.finish = [];
this.make = function (){
var i=0;
this.thing.each(function(){
_this.material [i]= $(this).find('#material_val').val();
i++;
});
}
}