我一直在制作一个简单的展示脚本,并且遇到了一个我无法自己解决的问题......
首先,粘贴一些代码:
obj.timeout = function() {
$.doTimeout('showcase', config['timeout'], function() {
//show preloader
$.doTimeout('showcase');
obj.addImage('next');
var angle = 0;
setInterval(function(){
angle+=3;
$(".showcase .preloader").rotate(angle);
},10);
$('.showcase .preloader').stop().fadeIn(config['speed']);
$('.showcase img.next').load(function() {
$('.showcase .preloader').stop().fadeOut(config['speed']);
obj.animateShowcase();
});
return true;
})
};
obj.init = function() {
//bind events (stop the timer on window blur and showcase hover)
$(window).bind('blur', function() {
$.doTimeout('showcase');
});
$('section.showcase, .showcase .preloader').bind('mouseover', function() {
$.doTimeout('showcase');
});
obj.timeout();
obj.loadData();
};
我正在使用一个名为jQuery.doTimeout的jquery插件(http://benalman.com/projects/jquery-dotimeout-plugin),它应该更容易使用timout(到目前为止它确实如此)。
运行$ .doTimeout(id)会停止以前使用相同ID启动的超时。
展示工作,在正确的延迟后动画等等。我试图在有人盘旋在陈列柜后停止它,但它只适用于第一个'循环'...计时器停止,一切都很好。 不幸的是,在超时功能运行至少一次后,事件似乎解除了绑定...超时保持循环,但鼠标悬停或模糊事件停止工作......
我坐了几个小时,看不到解决方案......也许我只需要另外一双眼睛看看它!
提前致谢!!
答案 0 :(得分:1)
我想问题是如果你的超时功能正在运行,它总是通过return true
在最后重启。为什么不设置属性obj.showcase_active = true
并让超时函数return obj.showcase_active
而不是return true
。然后在mouseover回调中,停止计时器并设置obj.showcase_active = false
。