我只是好奇......我怎么在jQuery函数中使用'this'?
例如,如果我有这样的代码......
headEl.find("form.blog-search input").focus(function() {
$(this).next("span").animate({opacity:1}, 200);
})
它工作正常,但是在linting时我会收到“在关闭中使用'此'”的警告。
这是我应该忽略的东西,还是我可以做的事情不仅要解决警告,还要改进我的代码?
更新
根据Kevin B在下面的评论,我将代码更改为
headEl.find("form.blog-search input").on('focus', function(event) {
$(event.target).next("span").animate({opacity:1}, 200);
})
哪个按预期工作...现在我只是好奇,这个方法的缺点是什么,什么时候应该用于this
,反之亦然?
答案 0 :(得分:1)
在此特定闭包中使用this
没有问题。
警告可能是因为有时人们期望this
的值与关闭之外的值相同,而事实并非如此。
在您的特定情况下,您正确使用它,因为事件系统将this
设置为触发事件的对象。
例如,人们经常进行ajax调用,并期望成功处理程序中this
的值与进行ajax调用时的值相同,但通常情况并非如此。
答案 1 :(得分:0)
我会说个人忽略jslint。如果你真的想摆脱警告你可能会这样做:
headEl.find("form.blog-search input").focus(function(e) {
$(e.currentTarget).next("span").animate({opacity:1}, 200);
})
传递给focus
的函数传递给事件对象。