不明白为什么会发生这种事。
var thumb_width = 240;
var thumb_height = 180;
$('.video-thumbnail').on({
'mouseenter': function(){
var i = 0; var j = 0;
$(this).id = setInterval(function(){
$(this).animate({
'background-position-x': -(j * thumb_width),
'background-position-y': -(i * thumb_height)
});
i++; j++;
}, 1000);
}
})
});
最佳答案
因为setInterval
在Window
上下文中运行。为了修复它,您应该显式提供正确的对象上下文。您有几个选择:
使用$.proxy
:
$('.video-thumbnail').on({
'mouseenter': function() {
var i = 0; var j = 0;
$(this).id = setInterval($.proxy(function() {
$(this).animate({
'background-position-x': -(j * thumb_width),
'background-position-y': -(i * thumb_height)
});
i++; j++;
}, this), 1000);
}
});
或者使用对this
的引用:
$('.video-thumbnail').on({
'mouseenter': function() {
var i = 0; var j = 0, self = this;
$(this).id = setInterval(function() {
$(self).animate({
'background-position-x': -(j * thumb_width),
'background-position-y': -(i * thumb_height)
});
i++; j++;
}, 1000);
}
});
关于javascript - 无法使用 'in' 运算符在未定义中搜索 'backgroundPositionX',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21811582/