2012-11-15 28 views
0

我不确定我的标题是否正确,但我想要做的是停止fadeToggle();如何停止功能或动画laggy /越野车的事情?

当我点击,一旦它淡入和第二点击淡出我的覆盖,但是当我点击像疯狂快上的按钮就淡入淡出,并很慢和马车......

我想要做的是防止这看起来越野车,因为我正在学习基础知识,我不知道如何,但...如果任何人都可以告诉我,请吗?

这里的样本:

$('#overlay-trigger, div#overlay').on('click', function() { 
    $('div#overlay').fadeToggle(); 
}); 

JS Fiddle Sample

所以,因为它是noticable我有一个名为#叠加触发按钮。点击该按钮时,叠加fadeIn();

后上覆盖的是点击隐藏自身...

所以,如果你只是一味地点击快你会看到什么不对的地方......它stucks,速度慢,laggy我不知道正确的词.. 。

请帮助我,并提前致谢。

回答

2

您可以使用:animated选择..

$('#overlay-trigger, div#overlay').on('click', function() { 
    var $overlay = $('div#overlay'); 
    if(!$overlay.is(':animated')){ 
     $overlay.fadeToggle(); 
    } 
}); 

Check Fiddle

+0

有趣的方法! :d 但我不明白这是什么部分是指: 感叹号 感谢寿...它的工作原理,以及,有趣的是 – dvLden

+1

它是一个没有运营商..检查是否股利是(!)目前没有动画,只能切换 –

+0

这意味着什么 - 如果元素不是动画..然后fadetoggle() - ..良好的解决方案..也就是说,当用户不想等到动画完成第一个切换再次.. –

1

使用.one()可能解决您的问题。从jQuery API文档:

将处理程序附加到元素的事件。处理程序每​​个元素最多执行一次。

one()函数通过在第一次调用后解除绑定click事件而起作用。要修改从您的代码中减少可能,只需使用它如下:

$('#overlay-trigger, div#overlay').one('click', function() { 
    $('div#overlay').fadeToggle(); 
}); 

我希望它有帮助。干杯

+0

嘿布鲁诺! 不知何故,这对我来说根本不起作用。我不知道为什么... – dvLden

+1

因为哑巴我删除了这个例子中的一个重要部分。现在看版 –

+0

啊...我现在看到了。但这并不是做必需的工作。 它确实有效,但只有一次。一次淡入和一次淡出,然后停止工作。 但很好学,所以谢谢。 – dvLden

2

你需要使用jQuery的.stop()方法与动画,传入需要的参数前。 .stop(true).stop(true,true)

$('#overlay-trigger, div#overlay').on('click', function() { 
    $('div#overlay').stop().fadeToggle(); 
});​ 

http://jsfiddle.net/nPShy/

+0

我看到......我试过这个停止(),我只把它放在错误的地方......我把它放在fadeToggle()之后的地方;所以它不起作用,因为它停止了淡入淡出的动画。 谢谢:) – dvLden