Jquery delay()锁定和拦截

时间:2014-08-20 21:23:22

标签: jquery

我使用它来执行显示然后在10秒后销毁它。它有一个“x”关闭函数,如果你想早点关闭它,那么destroy_example()会杀死它。它不会叫它。

我做了一点测试,我把它缩小到函数中的delay()函数create_example()似乎锁定了id,其他函数会调用但我不能提前执行它。

function create_example(){
    $("#my_example_id"+).fadeIn( 500 ).delay(10000).fadeOut(500, function() { $(this).remove(); });
    return false;
    }

function destroy_example(){
    $("#my_example_id").fadeOut(200, function() { $(this).remove(); });
    return false;
    }

这是一个JSFIDDLE示例:http://jsfiddle.net/ymtc1z6k/4/

有什么方法可以解决这个问题吗?提前致谢。

2 个答案:

答案 0 :(得分:1)

动画会附加到队列中。您可以中止当前动画并使用.stop()清除队列:

$("#my_example_id").stop(true).fadeOut(200, ...);

来自文档:

  

如果在同一元素上调用多个动画方法,则后面的动画将放置在元素的效果队列中。这些动画直到第一个动画完成才会开始。调用.stop()时,队列中的下一个动画立即开始。如果clearQueue参数的值为true,则队列中的其余动画将被删除,并且永远不会运行。

答案 1 :(得分:0)

这个怎么样?

function create_example(){
  $("#my_example_id"+).fadeIn( 500 );
  return false;
}

function destroy_example(){
  $("#my_example_id").fadeOut(200, function() { $(this).remove(); });
  return false;
}

$(function() {
 create_example();
 setTimeout( destroy_example, 10000);
});