关闭时使用’this’

我只是好奇……我怎么在jQuery函数中使用’this’?

例如,如果我有这样的代码……

headEl.find("form.blog-search input").focus(function() { $(this).next("span").animate({opacity:1}, 200); }) 

它工作正常,但是在linting时我得到了“ 关闭时使用’ this的警告”。

这是我应该忽略的东西,还是我可以做的事情不仅要解决警告,还要改进我的代码?

更新:

根据Kevin B在下面的评论,我将代码更改为

  headEl.find("form.blog-search input").on('focus', function(event) { $(event.target).next("span").animate({opacity:1}, 200); }) 

哪个按预期工作…现在我只是好奇,这个方法的缺点是什么,什么时候应该用它来支持this ,反之亦然?

我会说个人忽略jslint。 如果你真的想摆脱警告你可能会这样做:

 headEl.find("form.blog-search input").focus(function(e) { $(e.currentTarget).next("span").animate({opacity:1}, 200); }) 

传递给focus的函数传递给事件对象。

http://api.jquery.com/event.currentTarget/

在这个特定的闭包中你没有使用它的问题。

警告可能是因为有时人们期望这个价值与关闭之外的价值相同,而事实并非如此。

在您的特定情况下,您正确使用它,因为事件系统this设置为触发事件的对象。

例如,人们经常进行ajax调用,并期望成功处理程序中的值与调用ajax调用时的值相同,但通常情况并非如此。