Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何拨打多次电话”;动画化;上课?_Javascript_Jquery - Fatal编程技术网

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)