ajax调用后$('')选择器不工作

$('') selector not working after ajax call

本文关键字:选择器 工作 调用 ajax      更新时间:2023-09-26

为什么函数中的img : $('img')等变量在ajax调用后会丢失其值。下面是一个函数示例。

imageFades: {
   img : $('img'),
   init: function() {
      this.img.fadeIn(200)
      console.log('fire')
   }
}

ajax调用后,console.log会激发,但fadeIn不会。我已经测试过将$('img').fadeIn(200)直接添加到init函数中,这很好。到底发生了什么?

如果您在ajax调用中替换了图像(听起来像这样),或者在创建imageFades对象后的任何时候,那么您必须重新运行选择器,以便它可以看到新添加的图像。

imageFades: {
   init: function() {
      $('img').fadeIn(200);
      console.log('fire')
   }
}

jQuery对象不是"活动"的。它们跟不上DOM中的更改。它们表示创建jQuery对象时DOM中的内容以及它运行选择器查询的时间点的快照。

如果没有看到整个代码,很难说是肯定的,但很可能您混淆了this的使用。在jQueryAJAX响应函数中,this没有设置为创建的对象。引用jQuery API:

所有回调中的this引用是设置中传递给$.ajax的上下文选项中的对象;