我想在单击按钮后调用Javascript函数,使其每100毫秒循环1.5秒,然后将其暂停。
我的想法是,我想使此 Accordion 滑块能够使用此自定义jQuery滚动条显示可滚动内容(我不知道任何其他更好的自定义跨浏览器滚动条)。
每次用户单击其中一项时,都必须使用此功能来重建滚动条,方法是:
$(".ac-big").customScrollbar("resize")
为了使过渡顺利进行,我使用了setInterval,如下例所示:
<script type="text/javascript">
$(window).load(function () {
$(function(){
setInterval(function(){
$(".ac-big").customScrollbar("resize")
},100);
});
</script>
问题在于该脚本非常消耗资源。无需每100毫秒运行一次。我想让它仅在用户单击一个单选按钮后,每100毫秒运行一次1.5秒。
这是另一个问题。由于 Accordion 滑块是使用单选按钮构建的,因此如何单击单选按钮上的javascript函数?
我将setTimeout和setInterval插入到标记中,因为我相信必须结合使用这两个标记。如果我拥有所有必要的构建基块,那么我不会在这里浪费您的时间。
最佳答案
鉴于这种:
应该这样做:http://jsfiddle.net/pUWHm/
// I want to call a Javascript function after clicking a button
$('.button').click(function() {
var started = Date.now();
// make it loop every 100 milliseconds
var interval = setInterval(function(){
// for 1.5 seconds
if (Date.now() - started > 1500) {
// and then pause it
clearInterval(interval);
} else {
// the thing to do every 100ms
$(".ac-big").customScrollbar("resize")
}
}, 100); // every 100 milliseconds
});
策略是单击按钮时开始间隔,然后保存该间隔ID。开始时还保存。每次运行间隔时,您都要检查间隔是否足够长。如果还没有时间,那就去做。如果到了时间,请清除间隔,以免再次触发。