Javascript 动画回调中的jqueryanimate只工作一次
我有两个分页链接,它们触发jQuery动画 动画上的回调函数会触发第二个动画 这很好,但是,它只在第一次调用函数时起作用 每次之后,两个动画中的第一个都会工作,而第二个则不会,它只是更改CSS而没有效果 我在这里绞尽脑汁,毫无效果(双关语)Javascript 动画回调中的jqueryanimate只工作一次,javascript,jquery,animation,Javascript,Jquery,Animation,我有两个分页链接,它们触发jQuery动画 动画上的回调函数会触发第二个动画 这很好,但是,它只在第一次调用函数时起作用 每次之后,两个动画中的第一个都会工作,而第二个则不会,它只是更改CSS而没有效果 我在这里绞尽脑汁,毫无效果(双关语) 下面是演示:我认为在第一个动画准备就绪之前,动画功能不会字符串。文件说: 如果提供了完整的回调函数,则在 动画完成了。这对于串接不同的导线非常有用 动画按顺序排列在一起 类似的方法可能会奏效: function switchItem(e) { e.p
下面是演示:我认为在第一个动画准备就绪之前,动画功能不会字符串。文件说: 如果提供了完整的回调函数,则在 动画完成了。这对于串接不同的导线非常有用 动画按顺序排列在一起 类似的方法可能会奏效:
function switchItem(e) {
e.preventDefault();
// If not current piece
if($(this).hasClass('light')) {
/* VARIABLES */
var container = $('.portfolio footer .portfolio_content');
var link = $(this).attr('id');
var newItem = $(this).html();
/*===================================================
* This is the Key part here
===================================================*/
/* FIRST ANIMATION */
container.animate({
'right':'-100%'
}, 300, 'swing',
// Callback Function
function() {
$(this).html('').css({'left':'-100%'});
$.get('inc/portfolio/'+link+'.php', function(data) {
container.html(data);
});
}).complete(
/* SECOND ANIMATION */
container.animate({
'left':'0%'
}, 300, 'swing');
);
}
}
当您用新内容替换页面中的html时,它不会自动添加监听器或通过javascript添加的其他jquery增强功能 我怀疑您需要在将使用$.get获取的内容放入页面后再次应用这些
另一种选择是在一次加载中添加所有内容,但隐藏第二个页面。这可能是一个比使用$更好的选择。get请参见此处的工作示例,您的左侧与第一个右侧-100%动画冲突,最后如果不重置右侧,它将与第二个左侧动画冲突 在设置动画之前重置左侧
container.css('left', 'auto');
并在完成后立即重置
container.animate({
'left':'0%'
}, 300, 'swing', function() {
$(this).css('right', 'auto');
});
这是否可能是因为您将动画放在@get@函数中,而不是直接放在回调函数中?尝试将动画移到get外部,但要移到回调内部。为什么要设置左右动画?我认为你需要坚持下去。左右css可能相互冲突。*在两个container.animate()调用中…您是对的,它们相互冲突。非常感谢,这是我需要的修复。如果有人看到这一点,我还有一个问题。在演示的动画过程中,您可能会注意到,有时图像的一部分会在一瞬间被留下。有人知道这个问题的快速解决方法吗?什么时候发生的?你在小提琴上看到了吗?再看看演示。我改变了动画,因为我指的是这个小故障,但我已经把旧版本放回去给你看。单击较亮的着色分页时,将触发该动画。我这里的互联网连接速度非常慢,但我很确定即使是在慢速连接上,它也能做到这一点。我想这可能和帧速率有关。这不是每次都会发生,所以你可能需要点击几次。对不起,我没有看到任何故障,尽管我的电脑速度很快。可能导致类似于您所描述的情况的事情-在速度较慢的计算机上,您可能会看到div的一帧滑回左侧位置,即使动画速度为0。您的$.get可能导致此问题,因为您的连接速度较慢,您可以尝试在$.get success函数中移动所有动画
container.animate({
'left':'0%'
}, 300, 'swing', function() {
$(this).css('right', 'auto');
});