Javascript 将clearInterval设置为实际清除的问题
我正在尝试创建一个在jQuery悬停事件中激活的淡入淡出的幻灯片。 我的代码如下:Javascript 将clearInterval设置为实际清除的问题,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,我正在尝试创建一个在jQuery悬停事件中激活的淡入淡出的幻灯片。 我的代码如下: var myObj = null; $('selector').hover(function() { // Code to retrieve the image URLs via ajax and construct the slideshow html myObj = setInterval(playMe, 3000); }, function() { clearInterval(myObj
var myObj = null;
$('selector').hover(function() {
// Code to retrieve the image URLs via ajax and construct the slideshow html
myObj = setInterval(playMe, 3000);
}, function() {
clearInterval(myObj);
myObj = null;
})
var playMe = function() {
// this just changes the class of each images container, which changes the
// opacity from 0 to 1. The fade animation is done using css3 and a transition
}
我遇到的问题是clearInterval并不总是清除,特别是当您在屏幕上快速移动光标,从而触发快速鼠标移动/鼠标移出事件时。因为我怀疑有多个playMe正在运行,所以这会打乱计时
这周围还有什么吗?一种确保只有一个playMe/setInterval运行的方法
提前谢谢 在为其分配
setInterval
之前,可以检查myObj
是否为null
。这样,只能运行一个setInterval
$(函数(){
var myObj=null;
$('div#fadeinout')。悬停(函数(){
//代码通过ajax检索图像URL并构建幻灯片html
if(myObj==null){
myObj=设定间隔(playMe,3000);
}
},函数(){
if(myObj){
clearInterval(myObj);
myObj=null;
}
})
var playMe=函数(){
//这只会更改每个图像容器的类,从而更改
$('div#fadeinout')。切换类('fade');
//不透明度从0到1。使用css3和过渡完成淡入淡出动画
}
});代码>
div#fadeinout{
保证金:自动;
宽度:50%;
高度:200px;
边框:1px纯黑;
背景色:淡蓝色;
过渡:不透明度1.5s;
}
.褪色{
不透明度:0.25;
}
如果删除淡入淡出动画,是否仍然存在此问题?在$的第二个处理程序之后缺少结束括号。悬停
。但我不确定这是否是问题所在。你能创建一个“请”吗?如果你使用CSS,你可以完全避免这个问题,并使不透明度动画表现得更好。@James-是的,如果我删除动画对象,我仍然有这个问题。@Nisarg-你说得很对。这只是一个输入错误,在实际代码中是正确的。很好。花了这么长时间研究这个问题,我忘了使用一些基本的逻辑。非常感谢。@锶99没问题。