jQuery数字动画插件中的动画冲突

jQuery数字动画插件中的动画冲突,jquery,jquery-plugins,Jquery,Jquery Plugins,我一直在开发一个jQuery插件,在两个数值之间设置元素文本的动画。jQuery的animate函数强制您指定正在设置动画的属性。在我的例子中,我基本上需要在每个动画步骤上调用text(),所以我必须做一些欺骗才能让它工作 由于我没有以正常的方式使用animate(),我将自己暴露在冲突的动画中,因为jQuery不能为我处理它。例如,如果我开始在5秒内将元素的文本动画设置为“500”,并立即在1秒内将同一元素的文本动画设置为“500000”,我会得到奇怪的结果,因为它们相互冲突 一幅画抵得上千言

我一直在开发一个jQuery插件,在两个数值之间设置元素文本的动画。jQuery的animate函数强制您指定正在设置动画的属性。在我的例子中,我基本上需要在每个动画步骤上调用text(),所以我必须做一些欺骗才能让它工作

由于我没有以正常的方式使用animate(),我将自己暴露在冲突的动画中,因为jQuery不能为我处理它。例如,如果我开始在5秒内将元素的文本动画设置为“500”,并立即在1秒内将同一元素的文本动画设置为“500000”,我会得到奇怪的结果,因为它们相互冲突

一幅画抵得上千言万语,所以这里有一个JSFIDLE:

我的主要问题是:当我开始一个新的动画时,最合适的方法是什么来确保之前的动画停止

我的第二个问题是:到目前为止,你对我的代码有什么反馈?你会采取不同的方法吗


谢谢。

我只是分配ID,而不是按类调用。。。这将使用你的代码,我在我的版本中做了相当多的编辑,所以我甚至不会这样做

$(function() {
    $('#oneThousand').tweenText(500, 5000);
    $('#fiveThousand').tweenText(500000, 1000);
})
在您的代码中,我觉得$。tweenText中的每一个都不是很有用,我认为这应该在方法之外。其概念是对指定的选择器执行此操作,而不是在方法中进行额外选择

另外,我强烈建议使用参数对象,而不是传递预定义的集,那么不需要的对象可能会被传递为null或忽略

此外,我添加了一个回调函数,这样您就可以设置在当前tweenText完成时运行的东西

这是我的修改


感谢您的回复和良好建议!我想我可能误解了主要问题。从使用的角度来看,将每一个都分开处理是很容易的。我试图解决一个更大的问题,即其他人将如何使用该插件,并确保我适当地处理这些可能性。我认为插件应该始终能够处理多个元素(因此使用class vs.id)和连续/潜在冲突的调用(两个连续的tweenText调用,使用不同的参数)。您可以同时使用class和/或我的解决方案。。。字面上是任何选择器,它处理连续的调用。啊,我明白你对$。的看法了。这是有道理的。谢谢至于连续的电话,我想说的是:啊,我明白你现在对每个美元的看法了。这是有道理的。谢谢至于连续的呼叫,这里是我要说的:如果你用鼠标移动一点,你就会看到问题所在。这是我最好的解决方案:看起来合法吗?看起来不错!在我看第二本之前,我想推荐一下你所做的。