Javascript “如何拨打多次电话”;动画化;上课?
我在课堂上有方法:Javascript “如何拨打多次电话”;动画化;上课?,javascript,jquery,Javascript,Jquery,我在课堂上有方法: function myClass(){ this.showTab = function(){ $('#tab-image').stop().animate( { left: 500 + 'px' }, 500 , function(){ alert('end'); } ); } } 我两次调用这个方法: var ob
function myClass(){
this.showTab = function(){
$('#tab-image').stop().animate(
{ left: 500 + 'px' },
500 , function(){
alert('end');
}
);
}
}
我两次调用这个方法:
var obj = new myClass();
obj.showTab();
$('#tab-image').css({ left: -500 + 'px' });
obj.showTab();
此代码可以工作,但在第二次显示时没有动画。如何做好?动画功能以异步模式运行。这意味着第二个动画不会等待第一个动画完成,因此,这两个动画都是并行执行的。 这就是为什么动画有第二个参数:设置一个回调函数,该函数将在动画完成后执行 这应该起作用:
function myClass() {
this.showTab = function(callback) {
$('#tab-image').stop().animate({
left: 500 + 'px'
}, 500, callback);
}
}
var obj = new myClass();
obj.showTab(function() {
$('#tab-image').css({
'left': -500 + 'px'
});
obj.showTab();
});
或者,如果在调用回调函数之前需要执行其他操作:
function myClass() {
this.showTab = function(callback) {
$('#tab-image').stop().animate({
left: 500 + 'px'
}, 500, function() {
//Insert your code here
if(typeof callback === "function") callback();
});
}
}
希望这能解决你的问题 我认为这是由动画效果的快速积累造成的 要防止这种情况发生,应该向stop()方法传递两个参数
这将导致效果队列被清除,并跳到末尾。第二个动画可能与第一个动画重叠。您应该在第一次调用的回调函数中第二次调用它。您的意思是“var obj=new myClass()”吗?由于myClass()不返回任何内容,“obj”应该是未定义的。
stop(true, true)