在JQuery加载()之前运行动画
我试图利用JQuery的在JQuery加载()之前运行动画,jquery,ajax,load,Jquery,Ajax,Load,我试图利用JQuery的load()函数,但我不明白为什么在加载请求之前不会发生动画 例如,如果我有一个脚本,上面写着: $('#clickme').click(function() { $('#content').slideUp(500); $('#content').slideDown(500); }); 然后,事情就这样发生了。它向上滑动,然后向下滑动。但是,如果我在这两行之间放置一个load()函数,它将完全忽略第一行动画,只对其余行执行 $('#clickme').
load()
函数,但我不明白为什么在加载请求之前不会发生动画
例如,如果我有一个脚本,上面写着:
$('#clickme').click(function() {
$('#content').slideUp(500);
$('#content').slideDown(500);
});
然后,事情就这样发生了。它向上滑动,然后向下滑动。但是,如果我在这两行之间放置一个load()
函数,它将完全忽略第一行动画,只对其余行执行
$('#clickme').click(function() {
$('#content').slideUp(500);
$('#content').load('myotherpage.php').hide();
$('#content').slideDown(500);
});
为什么会这样?我尝试在操作上放置一个delay()
,但没有成功。我能做些什么来防止这种情况发生,这样我的活动就会有一个很好的进出效果
非常感谢,因此尝试在
slideUp
函数的回调内部使用load
:
$('#content').slideUp(500 ,function() {
$('#content').load('myotherpage.php').hide();
});
试试这个:
$('#content').slideUp(500).load('myotherpage.php', function () {
$('#content').slideDown(500);
});
但是,它确实可以正确地滑动,因为.load清空了元素,它看起来好像是立即发生的,因为元素的高度突然变为0+填充 我建议不要使用。请在此处加载:
$('#clickme').click(function() {
// get data
var request = $.get("myotherpage.php");
$('#content').slideUp(500,function(){
// when request is done AND the element is hidden, apply content and slide it back down.
request.done(function(html){
$('#content').html( $.parseHTML(html) ).slideDown(500);
});
});
});
这将导致只要请求时间少于500毫秒,slideUp和slideDown之间就不会有延迟。将加载放在
slideUp
回调中,并将slideDown
放在加载回调中(因为它是异步的)
他们可能正在同步运行。我一直认为JQuery接二连三地接受了订单……不错。这是一个很好的建议。加载后,我将slideDown()函数嵌套为回调函数,确保一切正常。将标记为已接受。谢谢
$(document).ready(function () {
$('#clickme').click(function () {
$('#content').slideUp(500, function () {
$('#content').load('myotherpage.php', function () {
$('#content').slideDown(500);
});
});
});
});