故意暂停执行功能
pause executing function on purpose
我有一个简单的.click()
函数,里面有一些函数:
$mario.on('click', this, function() {
var width_mario = $window.width()/2;
$contentw.animate({left: '100%', marginLeft: -width_mario, marginTop: 0}, 600);
$fixed.css({'background-color': '#510000', 'left': '25%'});
createMario();
trigger(); // fire trigger not until createMario() is finished with animation
});
createMario()
函数内部是大量 jQuery .animate()
离子。我打算做的是,在createMario()
的动画完成之前触发触发器。类似于返回函数的东西,如果动画完成,您可以在单击函数中执行。
谢谢
编辑:而不是setTimeout()
因为动画具有随机速度。
你不能
从字面上做到这一点。相反,您需要做的是对trigger
函数的引用传递到createMario
中,并让它在动画完成后调用该函数。假设动画是通过jQuery制作的,它们在完成后会调用一个回调。
将其
作为回调传递,如下所示:
function createMario(calback_fn) {
...
animate({...}, {duration: 12345, complete: callback_fn});
...
}
确保将其添加到最长的animate
呼叫中。请注意,可能需要稍微更改动画语法,请参阅 http://api.jquery.com/animate/以了解不同的参数选项)。
然后做:
...
$fixed.css({'background-color': ... as before... });
createMario(trigger);
如果要对 createMario
函数中的 1 个元素进行动画处理,也可以使用 element.promise.done(function() { trigger(); });
,也可以将其附加到最长的动画元素(完成时间最长的元素),它将在该元素完成动画处理后调用 trigger()
函数。
这是我整理的一个jsFiddle,它就是一个例子:http://jsfiddle.net/WPHmY/2/
相关文章:
- 我想用Javascript网站在开放的Chrome浏览器上执行功能
- 如果未按下该按钮,则在30秒内自动执行该功能
- 如果在编辑中下拉值发生变化,如何执行功能
- 在周一上午8点至晚上7点之间执行功能
- 对页面上的所有ID执行JS功能
- 使用html 5对元素执行自定义表单验证功能
- 如何在ng中继器运行中执行功能
- 具有onclick功能的自定义复选框在实际切换复选框之前执行功能
- 基于条件执行功能
- clearInterval无法执行shuffle功能
- 页面内容加载完毕后执行Jquery功能
- 自动执行Javascript中的功能,用于评测实现
- 为什么不是't点击按钮时执行的功能
- Chrome扩展 - 如何使用按钮单击功能执行javascript文件
- Meteor功能执行了两次
- 分配和功能执行
- 有条件地延迟功能执行
- 功能执行后禁用键
- JS多功能执行
- 如何停止定时器,如果功能执行正确