Javascript 在Jquery的每个循环中使用TypeScript变量
我有一个叫做tableIndexNumber的变量,我需要在不同的方法中使用它。因此,当我尝试访问该变量时,我使用“this.tableIndexNumber”,并且我可以访问它。但是我不能在Jquery的每个循环中这样使用它,因为htmlElemets在每个循环中也定义为“this”。那么我应该走哪条路呢Javascript 在Jquery的每个循环中使用TypeScript变量,javascript,jquery,typescript,Javascript,Jquery,Typescript,我有一个叫做tableIndexNumber的变量,我需要在不同的方法中使用它。因此,当我尝试访问该变量时,我使用“this.tableIndexNumber”,并且我可以访问它。但是我不能在Jquery的每个循环中这样使用它,因为htmlElemets在每个循环中也定义为“this”。那么我应该走哪条路呢 export class TablesComponent implements OnInit { tableIndexNumber = 1; constructor() { } cha
export class TablesComponent implements OnInit {
tableIndexNumber = 1;
constructor() { }
change(col: number) {
$('#' + col).each(function () {
if ($(this).attr('class') === 'box') {
$(this).addClass('boxSelected');
this.tableIndexNumber ++;
} else {
$(this).removeClass('boxSelected').addClass('box');
}
});
}处理这个问题的老派方法是将
这个保存到一个变量中,然后在每个之前使用一个名为“context”或“that”之类的变量,然后使用该变量。谢天谢地,今天我们有了,它们非常适合这种情况,因为它们没有自己的this
上下文
更新:我忽略了查找的语法。看起来您需要内部这个,所以箭头函数不起作用。相反,您可以通过将外部this
保存到一个变量来解决问题:
export class TablesComponent implements OnInit {
tableIndexNumber = 1;
constructor() { }
change(col: number) {
const component = this;
$('#' + col).each(function() {
if ($(this).attr('class') === 'box') {
$(this).addClass('boxSelected');
component.tableIndexNumber++;
} else {
$(this).removeClass('boxSelected').addClass('box');
}
});
}
}
传统的处理方法是将this
保存到之前的变量中,每个称为“context”或“that”或类似的内容,然后使用该变量。谢天谢地,今天我们有了,它们非常适合这种情况,因为它们没有自己的this
上下文
更新:我忽略了查找的语法。看起来您需要内部这个,所以箭头函数不起作用。相反,您可以通过将外部this
保存到一个变量来解决问题:
export class TablesComponent implements OnInit {
tableIndexNumber = 1;
constructor() { }
change(col: number) {
const component = this;
$('#' + col).each(function() {
if ($(this).attr('class') === 'box') {
$(this).addClass('boxSelected');
component.tableIndexNumber++;
} else {
$(this).removeClass('boxSelected').addClass('box');
}
});
}
}
可能是Hey Zac的复制品。首先非常感谢你的回答。我试过你的代码,但当我运行它时,它总是转到“else”部分。这样($(this).attr不能正确工作:/My bad,我应该先查找jQuery方法。我已经更新了我的答案。谢谢。顺便问一下,是否可以调用该变量(“tableIndexNumber”)html内部?html只处理一般格式。它不知道任何变量或JS之类的逻辑。如果您使用Angular或React之类的工具,它将包括一种模板语言,可以替代html,您可以在其中插入逻辑。如果不这样做,您将需要使用JS将变量插入您想要的位置DOM.Hey Zac。首先非常感谢您的回答。我尝试了您的代码,但当我运行它时,它总是转到“else”部分。这样($(this.attr)就不能正确工作了:/My bad,我应该先查找jQuery方法。我已经更新了我的答案。谢谢。顺便问一下,是否可以调用该变量(“tableIndexNumber”)html内部?html只处理一般格式。它不知道任何变量或JS之类的逻辑。如果您使用Angular或React之类的工具,它将包括一种模板语言,可以替代html,您可以在其中插入逻辑。如果不这样做,您将需要使用JS将变量插入您想要的位置大教堂。