我有这段代码,但它只执行一次...
$('.' + container).hover(function() {
t = setTimeout( function(elem){
//this should be executed as long as I hover,
//with interval declared in viewSpped variable
$(elem).find('img').first().appendTo('.' + container).fadeOut(500);
$(elem).find('img').first().fadeIn(800);
}(this), viewSpeed);
}...知道我做错了什么吗?谢谢!
发布于 2012-09-29 23:22:45
setTimeout只调用回调一次,这很正常。
如果你想让你的函数以固定的时间间隔执行,你可能需要setInterval。
顺便说一句,您的代码中还有另一个错误:您可能需要
t = setInterval( function(elem){
//this should be executed as long as I hover,
//with interval declared in viewSpped variable
$(elem).find('img').first().appendTo('.' + container).fadeOut(500);
$(elem).find('img').first().fadeIn(800);
}, viewSpeed, this);setInterval或setTimeout传递给回调的参数在持续时间之后。
或者,为了更好地兼容(请注意,我提供的链接也提供了IE的变通方法):
var $elem = $(this);
t = setInterval( function(){
$elem.find('img').first().appendTo('.' + container).fadeOut(500);
$elem.find('img').first().fadeIn(800);
}, viewSpeed);发布于 2012-09-29 23:23:43
setTimeout在不带参数的情况下调用其回调。所以elem不会被传递给你的回调函数。如果您正在尝试执行自调用函数,那么您所要做的就是立即调用您的函数,而不是将回调传递给setTimeout()。
我不知道您希望elem是什么,但如果您希望它成为悬停的项目,您可以这样做:
$('.' + container).hover(function() {
var self = $(this);
t = setTimeout( function(){
//this should be executed as long as I hover,
//with interval declared in viewSpped variable
self.find('img').first().appendTo('.' + container).fadeOut(500);
self.find('img').first().fadeIn(800);
}, viewSpeed);
}...发布于 2012-09-29 23:24:06
您将立即调用该函数,而不是将其用作回调(这无论如何都不会起作用,因为您需要传递一个参数),我想您的意思也是setInterval。
var elem = $(this);
var container = $('.' + container);
t = setInterval(function() {
elem.find('img').first().appendTo(container).fadeOut(500);
elem.find('img').first().fadeIn(800);
}, viewSpeed);https://stackoverflow.com/questions/12653948
复制相似问题