javascript - 清除 jQuery 插件中的间隔

标签 javascript jquery

我有一个非常简单的插件,可以在一段文本中添加点,即

Loading.
Loading..
Loading...
Loading.

等等

这是我的代码(http://codepen.io/EightArmsHQ/pen/waGzJb?editors=001):

$.fn.dotdotdots = function(options) {

  var settings = $.extend({
    speed: 300,
    dot_max: 3,
    reset: 0,
    string: '.'
  }, options );

  var default_text = this.text();
  var target = this;
  var dot_count = 0;

  setInterval(function(){

    var dots = '';

    for(var i = settings.reset; i < dot_count; i ++){
      dots += settings.string;
    }

    dot_count ++;
    if(dot_count > settings.dot_max){
      dot_count = settings.reset;
    }

    target.text(default_text + dots);
  }, settings.speed);

  return this;

};

$("#target").dotdotdots({'speed':400});

问题是,过了一段时间,我想从插件外部停止setInterval。我立即想到的是在函数内部尝试:

this.intId = setInterval(function(){

然后我可以使用类似的东西:

clearInterval($("#target").intId);

从外部停止插件执行其操作。但这并不能解决问题...任何人都可以指出我正确的方向吗?

说实话,我想知道是否需要使插件变得更复杂一点,并以某种方式使用 .start().stop() 函数。

最佳答案

您需要访问 setInterval 变量,因此将间隔分配给全局(插件内部)变量:

$.fn.dotdotdots.Interval = setInterval(...)

然后你可以清除它:

clearInterval($.fn.dotdotdots.Interval)

关于javascript - 清除 jQuery 插件中的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210683/

相关文章:

jquery - 如何让 3 个 div 彼此相邻对齐,以便它们位于底部和顶部 div 之间?

javascript - 关闭嵌套 Accordion 会关闭所有内容

javascript - 当用户按下 "Ctrl+V"时如何在 Firefox 中获取剪贴板文本和 html

javascript - 隐藏两个id之间的div

jquery - 我如何使用 AJAX 使我的登录和注册页面在 Rails 3 中相同?

javascript - Data-toggle 和 onclick 不能一起工作,我太新了,无法将@epascarello 的解决方案应用于

javascript - 如何在 materializecss 中禁用 autoslider?

javascript - ng-click 中的 $index 在 Firefox 中工作,但在 Chrome 中不起作用

javascript - 合并数组数组 | Node JS

javascript - 在 Javascript 中双重触发引用 self 的函数