快速说明: 我知道在函数中使用$(this)是行不通的,因为它不在合适的范围内。我也看到过其他类似的问题。我还是无法弄清楚如何修复我的场景。
目标:我正在尝试使用jQuery构建全景照片查看器。我有它工作,但我需要多个实例。所以我只需要瞄准我正在徘徊的那个。
代码:
jsFiddle:http://jsfiddle.net/kthornbloom/5J3rh/
简化代码:
var hoverInterval;
function doStuff() {
/* The next line is the one in question */
$(this).animate({
/* stuff happening */
});
}
$(function() {
$('.pan-wrap').hover(
function() {
/* stuff happening */
hoverInterval = setInterval(doStuff, 250);
},
function() {
clearInterval(hoverInterval);
});
});
答案 0 :(得分:2)
答案 1 :(得分:2)
您可以明确地将this
传递给doStuff
:
setInterval(function() {
doStuff(this);
}, 250);
在doStuff
你可以做到:
function doStuff(element) {
...
}
或者您可以为this
明确设置doStuff
的值,如下所示:
setInterval(function() {
doStuff.call(this);
}, 250);
然后您仍然可以在$(this)
内使用doStuff
而不更改其任何参数。有关call
的详细信息,请参阅Function.prototype.call
及其朋友Function.prototype.apply
。