JS/jQuery函数意味着只重复一次触发器
JS/jQuery Function meant to repeat triggers only one time
我想用jQuery制作一个简单的横幅旋转器。我想让它循环,但问题是它只在页面加载后立即触发,而不是从那以后。
下面是我的代码:var stop = false;
var tar = 1;
function slide(){
if(!stop){
switch(tar){
case 1:
jQuery("#um1").toggle(300, function(){jQuery("#um2").toggle(300);});
tar=2;
break;
case 2:
jQuery("#um2").toggle(300, function(){jQuery("#um3").toggle(300);});
tar=3;
break;
case 3:
jQuery("#um3").toggle(300, function(){jQuery("#um1").toggle(300);});
tar=1;
break;
}
}
}
jQuery(function(){
jQuery("#logosect").mouseenter(function(){ stop=true; });
jQuery("#logosect").mouseleave(function(){ stop=false; });
window.setInterval(slide(), 5000);
});
你需要传递一个函数引用setInterval(),在你的情况下,slide()
被调用时,你调用setInterval(),并通过它返回的值(在这种情况下未定义)作为回调setInterval
window.setInterval(slide, 5000);
对于性能问题,我推荐使用clearInterval。
var tar = 1;
var slideInterval;
function slide(){
switch(tar){
case 1:
jQuery("#um1").toggle(300, function(){jQuery("#um2").toggle(300);});
tar=2;
break;
case 2:
jQuery("#um2").toggle(300, function(){jQuery("#um3").toggle(300);});
tar=3;
break;
case 3:
jQuery("#um3").toggle(300, function(){jQuery("#um1").toggle(300);});
tar=1;
break;
}
}
jQuery(function(){
jQuery("#logosect").mouseenter(function(){
clearInterval( slideInterval );
}).mouseleave(function(){
slideInterval = window.setInterval(slide, 5000);
}).trigger("mouseleave");
});
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 在Angular应用程序中每个帖子投票一次
- 主干模型更改事件只触发一次
- Angular:$http.get()只在opstate触发器上每秒触发一次
- JS/jQuery函数意味着只重复一次触发器
- jquery触发器('resize')函数是否只工作一次?