jQuery:将JS函数绑定到所有选定元素

时间:2010-12-23 01:38:41

标签: javascript jquery html function

我确信这是一个简单的问题,但在这里没有看到适用的答案。我有这样的代码:

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

但该函数仅绑定到具有类.thumbImg的第一个元素。通常情况下,我会使用$(this),但这不起作用(除非我做错了)。

我想我的最后一招是for循环,但我确信有办法避免这种情况。

谢谢!

2 个答案:

答案 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可以在其他地方使用,所以你可以在必要时传入节点。