如何在jquery中链接这些效果?队列?承诺
How to chain these effects in jquery? Queue? Promise?
我有两个不连接的函数,至少没有办法进行回调。我首先希望列表向上滑动,然后向下滑动另一个。为了使它实际工作,至少,不知何故,我添加了delay()
.
我无法制作 fsFiddle,因为代码太复杂并且所有<a>
都有一个href
,但您可以在此处看到工作示例:http://liebdich.biz/。
这里的工作是什么以及如何做:queue
,promise
?
$('a').click(function(e){
e.preventDefault();
$(this).parent().find('ul').delay(500).slideDown(500);
$('a').removeClass('bold');
$(this).addClass('bold');
if ($(this).is('ul ul a')) {
return;
} else {
$('a').not(this).parent().find('ul').slideUp(500);
}
});
抱歉,但我无法制作 jsFiddle,因为导航中的所有<a>
都有一个href
.
这是使用 promise 对象以避免获得重复回调的合适位置:
$('a').click(function (e) {
e.preventDefault();
var $this = $(this);
$('a').removeClass('bold');
$this.addClass('bold');
if ($this.is('ul ul a')) {
$this.parent().find('ul').slideDown(500);
return;
} else {
$('a').not(this).parent().find('ul').slideUp(500).promise().done(function(){
$this.parent().find('ul').slideDown(500);
});
}
});
使用 Jquery,通常对于动画,您有一个回调函数,一旦动画完成,就会调用该函数。以下是slideUp的文档: http://api.jquery.com/slideUp/
如您所见,如果您使用两个参数,第二个参数与动画完成后调用的完整函数有关。
$('a').click(function(e){
var _link = $(this);
$('a').not(_link ).parent().find('ul').slideUp(500, function() {
$(_link).parent().find('ul').delay(500).slideDown(500);
});
});
我用你的一些代码编辑了我的代码。我仍然相信您需要使用回调函数来解决您的问题。
$('a').not(this).parent().find('ul').slideUp(500, function() {
$(this).parent().find('ul').delay(500).slideDown(500);
});
相关文章:
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 从函数返回角度承诺
- 如何处理node.js节点mongodb中的连接和查询队列
- 我怎样才能获得承诺的价值
- 延期承诺值未更新/解析/延期
- 在承诺链中处理早期回报的最佳方式
- 承诺在非节点式回调上使用Bluebird
- 简单的ES6承诺问题-交换解决和拒绝参数
- 组合承诺和非承诺值
- 带有对象/原型的链式承诺(Q延期)
- AngularJS$q承诺使用socket.io
- 如何在jquery中链接这些效果?队列?承诺
- 定时承诺队列/限制
- 是发送到事件队列的承诺回调
- 基于 WinJS 承诺的文件上传队列
- 基于承诺的队列
- 执行返回承诺的处理程序队列
- 包含承诺的队列异步操作
- Angular承诺队列和显示加载数据