Javascript 美元内的这个(这个)
我遇到了以下问题:Javascript 美元内的这个(这个),javascript,jquery,this,Javascript,Jquery,This,我遇到了以下问题: function Conclude (thing){ this.quant = thing.find('#quantity_material').val(); this.thing = thing; this.material =[]; this.finish = []; this.make = function (){ var i=0; t
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++;
});
}
}
我想分配consult.material
多个表中输入的值,以便consult.material[1]
是第一个表中#material_val
的值,依此类推。问题是当我写这篇文章时,它没有在.each()中引用函数consult
我做错了什么?JS中的每个函数
语句都有自己的这个变量。有两个函数,一个叫做consult
,另一个是匿名函数(实际上有两个匿名函数,但我要解释的东西仍然适用)
您的错误如下:
this.thing.each(function(){
->this
不属于consult
函数。它属于匿名函数
至少对您来说,最简单的解决方法是更改匿名函数的范围,以便匿名函数中的此
引用外部的consult
函数。如果您已经在使用jQuery
,请使用jQuery.proxy
方法执行此操作
代码:
试试这个,很简单
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++;
});
}
}
这是什么语言?可能是javascript,使用jquery.javascript和jquery可能重复的@maze le-好吧,这是语言规则之一,我们必须遵守。我同意一开始这是违反直觉的,但经验也会带来肌肉记忆:)代码>美元(这个)。查找(“#material_val”)这里的每个循环中的
都将引用consult对象,因此您需要将示例中的函数args行更改为this.thing.each($.proxy(function(index,item){
,然后将$(this)
更改为$(item)
。(注意:通过添加索引arg,您可以删除var i=0
和i++
并使用index
arg而不是i
您可以通过将this.thing.each(function(){
更改为this.thing.each(function(index))来改善这一点。){
。使用索引
而不是i
,并删除变量和增量
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++;
});
}
}