我试图让一个元素淡出,然后移动到另一个地方,然后再次淡入。
我试过了:
$(elem).slideUp().delay(500).detach().appendTo('#div').delay(500).slideDown();
我试过了:
$(elem).slideUp();
setTimeout(function(){
$(elem).detach().appendTo('#div');
},1300)
$(elem).slideDown()
在任何其他函数之前,appendto函数似乎没有任何效果......
任何想法?
感谢。
答案 0 :(得分:0)
许多jQuery函数将回调方法作为参数。例如,slideUp
可以执行此操作,它可能如下所示:
$(elem).slideUp(500, function() {
$(elem).detach().appendTo('#div').delay(500).slideDown();
});
答案 1 :(得分:0)
您需要使用完成回调来对操作进行排序:
(function($) {
$('.start').on('click', function(event) {
var elem = $('.from');
elem.slideUp(400, function() {
elem.appendTo('.to');
elem.slideDown();
});
});
}(jQuery));
slideDown
以控制其速度。创建一个jquery扩展,可以同时将多个元素设置为多个目标。
(function($) {
$.fn.animateInto = function(target, callback) {
target = $(target);
return this.each(function(i) {
var elem = $(this),
complete = 0;
elem.slideUp(400, function() {
elem.appendTo(target.eq(i % target.length));
elem.slideDown(function() {
if (++complete === elem.length)
callback && callback();
});
});
});
};
$('.start').on('click', function(event) {
$('.from').animateInto('.to');
});
}(jQuery));
答案 2 :(得分:0)
只有动画方法放在jQuery的特效队列中。
appendTo()
不是动画方法,但您可以使用jQuery的R6RS方法将其添加到效果队列中:
var elem = $('#ball');
$(elem)
.slideUp()
.delay(500)
.queue(function() {
$(this).appendTo('#div').dequeue();
})
.delay(500)
.slideDown();
<强>段:强>
var elem = $('#ball');
$(elem)
.slideUp()
.delay(500)
.queue(function() {
$(this).appendTo('#div').dequeue();
})
.delay(500)
.slideDown();
&#13;
#ball {
background: green;
border-radius: 50%;
width: 100px;
height: 100px;
}
#div {
position: fixed;
right: 0;
top: 0;
width: 200px;
height: 300px;
background: yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ball">
</div>
<div id="div">
</div>
&#13;