4

我想在单击按钮后调用 Javascript 函数,使其每 100 毫秒循环 1.5 秒,然后暂停。

这个想法是我想让这个手风琴滑块能够使用这个自定义的 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 秒。

另一个问题来了。由于手风琴滑块是使用单选按钮构建的,如何在单选按钮单击时调用 javascript 函数?

我已将 setTimeout 和 setInterval 插入到标签中,因为我相信我必须使用这 2 个的组合。如果我拥有所有必要的构建块,我就不会在这里浪费你的时间。

4

1 回答 1

8

鉴于这种:

我想在单击按钮后调用 Javascript 函数,使其每 100 毫秒循环 1.5 秒,然后暂停。

这应该这样做: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。您还可以在开始时保存。每次间隔运行时,您都会检查它是否足够长。如果还没有时间,那就去做吧。如果时间到了,请清除间隔,以免再次触发。

于 2013-07-02T21:20:50.067 回答