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