2010-12-23 43 views
0

我确定这是一个简单的问题,但在这里没有看到适用的答案。我有这样的代码:jQuery:将JS功能绑定到所有选定的元素

$('.thumbImg').mouseout(function(){selectCur()}); 
//selectCur() is a pure-JS function defined elsewhere in the document 

但功能只绑定到第一个元素.thumbImg类。通常情况下,我会使用$(this),但这不起作用(除非我做错了什么)。

我想我最后的手段是for循环,但我敢肯定有一种方法可以避免这种情况。

谢谢!

+0

问题可能在`selectCur()`中。该代码*会将处理程序绑定到所有.thumbImg的。 – 2010-12-23 01:41:13

+0

你是对的。我有一个很好的,老式的缓存问题。 – Nathan 2010-12-23 01:44:27

回答

0

不要认为这是一个缓存问题,这是一个上下文问题。通过将$ this传入您的selectCur来修复它。

$('.thumbImg').mouseout(function(){selectCur($(this))}); 

甚至

$('.thumbImg').mouseout(selectCur); 

然后selectCur可以使用$(本);我认为第一种解决方案更好,因为selectCur可以从其他地方使用,所以您可以在需要时传递节点。

1

原因this不起作用的是它在您的代码function() {}本地,而不是selectCur()函数。

如果你想在selectCur()使用this,你可以不喜欢它:

$('.thumbImg').mouseout(selectCur);

你做的方式是让一个匿名函数/关闭调用你的函数,并指的是在鼠标移开。取而代之的是,你所需要做的就是指向你的函数(不要叫它,这里没有()),它会在事件触发时被调用。你不需要一个函数来指向一个函数。只要指出它就行了。

相关问题