使用'这个'在关闭

时间:2013-11-26 21:41:37

标签: jquery closures this

我只是好奇......我怎么在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,反之亦然?

2 个答案:

答案 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的函数传递给事件对象。

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