我确信这是一个简单的问题,但在这里没有看到适用的答案。我有这样的代码:
$('.thumbImg').mouseout(function(){selectCur()});
//selectCur() is a pure-JS function defined elsewhere in the document
但该函数仅绑定到具有类.thumbImg
的第一个元素。通常情况下,我会使用$(this)
,但这不起作用(除非我做错了)。
我想我的最后一招是for循环,但我确信有办法避免这种情况。
谢谢!
答案 0 :(得分:1)
this
不起作用的原因是它在代码中function() {}
是本地的,而不是selectCur()
函数。
如果您想在this
中使用selectCur()
,可以这样做:
$('.thumbImg').mouseout(selectCur);
你这样做的方法是创建一个匿名函数/闭包来调用你的函数并在mouseout中引用它。而不是这个,你需要做的只是指向你的函数(不是在这里调用它,不是()
)而是在事件触发时调用它。您不需要函数来指向函数。只需指出它就可以了。
答案 1 :(得分:0)
不要认为这是一个缓存问题,这是一个上下文问题。通过将$ this传递给您的selectCur来修复它。
$('.thumbImg').mouseout(function(){selectCur($(this))});
甚至
$('.thumbImg').mouseout(selectCur);
然后selectCur可以使用$(this);我认为第一个解决方案更好,因为selectCur可以在其他地方使用,所以你可以在必要时传入节点。