Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Jquery的每个循环中使用TypeScript变量_Javascript_Jquery_Typescript - Fatal编程技术网

Javascript 在Jquery的每个循环中使用TypeScript变量

Javascript 在Jquery的每个循环中使用TypeScript变量,javascript,jquery,typescript,Javascript,Jquery,Typescript,我有一个叫做tableIndexNumber的变量,我需要在不同的方法中使用它。因此,当我尝试访问该变量时,我使用“this.tableIndexNumber”,并且我可以访问它。但是我不能在Jquery的每个循环中这样使用它,因为htmlElemets在每个循环中也定义为“this”。那么我应该走哪条路呢 export class TablesComponent implements OnInit { tableIndexNumber = 1; constructor() { } cha

我有一个叫做tableIndexNumber的变量,我需要在不同的方法中使用它。因此,当我尝试访问该变量时,我使用“this.tableIndexNumber”,并且我可以访问它。但是我不能在Jquery的每个循环中这样使用它,因为htmlElemets在每个循环中也定义为“this”。那么我应该走哪条路呢

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将变量插入您想要的位置大教堂。