允许在jQuery插件中链接

时间:2014-08-23 10:07:56

标签: javascript jquery plugins chaining

这是漫长的一天,我似乎无法弄清楚为什么我的一个自定义jQuery插件不会链。

我想要做的是在一个元素中一次一个地写出一行字符然后在完成后删除文本然后写下一行

插件:

(function($) {
  $.fn.writeDialogue = function(content) {
    var contentArray = content.split(""),
      current = 0,
      elem = this,
      write = setInterval(function() {
        if(current < contentArray.length) {
            elem.text(elem.text() + contentArray[current++]);
        } else {
          clearInterval(write);
          return this;
        }
      }, 100);
  };
})(jQuery);

我试图以这种方式链接它:

$('#element').writeDialogue(textLine1).empty().writeDialogue(textLine2);

不能让它发挥作用,任何想法?

1 个答案:

答案 0 :(得分:4)

这是因为您的代码是异步的。所以你必须移动return this

(function($) {
  $.fn.writeDialogue = function(content) {
    var contentArray = content.split(""),
      current = 0,
      elem = this,
      write = setInterval(function() {
        if(current < contentArray.length) {
            elem.text(elem.text() + contentArray[current++]);
        } else {
          clearInterval(write);
        }
      }, 100);
      return this; // THERE
  };
})(jQuery);