首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery Stop()函数不停止动画

JQuery Stop()函数不停止动画
EN

Stack Overflow用户
提问于 2012-10-10 08:41:57
回答 2查看 398关注 0票数 0

我有两个句子,highlight每个单词带有一个animation

如果我按下"First Line"按钮,动画将播放为第一行,如果按下"Sec Line"按钮,第一行动画将停止,秒线动画将播放。

JQuery码

代码语言:javascript
运行
复制
var time = 15; 

$("#go").click(function(){
  $("abbr", "#2" ).stop(true,true); 
    $("abbr", "#1").each(function(i,e) {
           $(e).delay(i * ((time * 1000) / $("abbr",  "#1").length))
               .animate({'color': 'red'}, 1, function () {
               $(e).animate({ 'color': 'black' }, 5000);
               });
    });
});

$("#back").click(function(){
    $("abbr", "#1" ).stop(true,true);
    $("abbr", "#2").each(function(i,e) {
           $(e).delay(i * ((time * 1000) / $("abbr",  "#2").length))
               .animate({'color': 'red'}, 1, function () {
               $(e).animate({ 'color': 'black' }, 5000);
               });
    }); });

Html代码

代码语言:javascript
运行
复制
<span id="1">
    <abbr>fractal </abbr>
    <abbr>is a mathematical </abbr>
    <abbr>that has </abbr> 
    <abbr>a fractal dimension </abbr> 
    <abbr>that usually</abbr> 
    <abbr>exceeds its </abbr> 
    <abbr>topological dimension</abbr> 
    <abbr>fractal </abbr>
    <abbr>is a mathematical </abbr>
    <abbr>that has </abbr> 
    <abbr>a fractal dimension </abbr> 
    <abbr>that usually</abbr> 
    <abbr>exceeds its </abbr> 
    <abbr>topological dimension</abbr>  
</span>
<br>
 <br> 
 <span id="2">
    <abbr>and may </abbr>
    <abbr>fall between </abbr>
    <abbr>the integers </abbr> 
    <abbr>Fractals </abbr> 
    <abbr>are typically </abbr> 
    <abbr>self-similar </abbr> 
    <abbr>patterns</abbr> 
    <abbr>and may </abbr>
    <abbr>fall between </abbr>
    <abbr>the integers </abbr> 
    <abbr>Fractals </abbr> 
    <abbr>are typically </abbr> 
    <abbr>self-similar </abbr> 
    <abbr>patterns</abbr>  
</span> 
<br>
 <br> 
<button id="go">First Line</button> 
<button id="back">Sec Line</button>

每件事都很好,但是当我播放第一行动画时,再过几秒钟(例如,3 sec)按"sec line"按钮动画,再一次(例如3秒)按下第一行动画将从句子的开头和中间开始。

结果:小提琴

我认为stop()函数有一些问题。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-10 09:16:46

我找到解决办法了

而不是使用

代码语言:javascript
运行
复制
 $("abbr", "#2" ).stop(true,true); 
 $("abbr", "#1" ).stop(true,true); 

我使用

代码语言:javascript
运行
复制
  $("abbr").stop(false,true);

结果:http://jsfiddle.net/d5VTg/3/

票数 1
EN

Stack Overflow用户

发布于 2012-10-10 09:08:51

我认为你不能清除你的延迟队列。尝试在循环中使用计时器来代替:

代码语言:javascript
运行
复制
// check if the timer is running, in that case, clear it: clearTimeout(timer);

var timer = setTimeout(function(){

    //do animation stuff

}, (i * ((time * 1000) / $("abbr",  "#1").length)));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12815325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档