4 个回答

里面的this和外面的this不一样,需要先在外面保存外面的this

this 是原始 DOM,也就是 document.createElement 创建出来,也是 document.querySelector 获取到的。可以使用比如说 this.src 之类的方法,或者是 this.dataset.src 这些。

$(this)jquery 封装过的 DOM 对象。可以使用 $(this).attr('src') 之类的方法。

使用 function 关键字初始化的函数体内部和外部的 this 所指向的对象不一样,所以函数体内部要操作外部的 this 的时候,通常会在函数体外部初始化一个 _this = this(也有人喜欢用 that),这是 _this 的由来。
事实上这里的 $this 等价于 $(_this),但由于是在 .each 的回调函数体内,意味着$(_this)会被多次引用,如果每次引用都靠 $(_this) 来生成的话,会造成额外的时间开销,所以在函数体外用 $this$(this) 缓存起来。

那时候还没有箭头函数,在匿名函数调用外部实例的时候先要在外部声明一下,否则this就是执行环境的this,而不是jquery想要获取的this

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题