jQuery在if语句中找不到“ this”

时间:2019-02-13 14:57:07

标签: javascript jquery if-statement

我正在使用jquery,并希望使用if语句来确定跨度的宽度以及是否大于x并在同一个对象中添加一个类

getTry(){    
let headers = new HttpHeaders().set("Access-Control-Allow-Origin", "*");    
const options = {headers};    
return this.http.get(this.apiUrl, options)    
  .map((res: HttpResponse<any>)  => res.body)    
  .subscribe( data => {    
    console.log(data);    
    this.data = data;    
  })    

我希望“ this”将完全填充类应用于工具顶部类

3 个答案:

答案 0 :(得分:0)

在给定的函数上下文中,this的值不会改变,但是您可以利用jQuery为.width()方法提供的变体:

$(".tool-tip").width(function(index, width) {
  if (width > 300)
    $(this).addClass("full-width");
});

它将在每个元素上使用“工具提示”类进行操作;如果您只是想影响第一个,如您的示例代码一样(如果可行),则可以检查index参数,该参数告诉您匹配元素列表中的索引。

答案 1 :(得分:0)

在javascript中,this指的是包含函数。可以在以下上下文中在jQuery中使用它:

$(".tool-tip").click(function(){
    $(this).addClass("full-width");
})

在您的情况下,您需要再次使用标识符,即

if ($(".tool-tip").width() > 300) {
    $(".tool-tip").addClass("full-width");
}

编辑: 另外,选择器将返回多个项目。您可以按照Pointy所示对其进行迭代,也可以使用$(".tool-tip").eq(0)而不是$(".tool-tip")

来选择第一个匹配项

答案 2 :(得分:0)

this是函数范围的,这意味着它仅在函数内部时才具有不同的值。如果在任何函数之外调用this,则this指的是Window本身。从函数内部调用this表示函数本身,除非您从this调用Event,在这种情况下this表示导致事件触发的元素。对于您而言,如果您拥有的if语句不在函数内,则this将引用Window