2015-01-17 8 views
0

Я хочу, чтобы вызвать вторую функцию после первого завершенияПочему обратный вызов в javascript не работает?

function first(callback) { 
    alert('called first'); 
    $('.fillColor1').animate({ 
     height: '50px' 
    }, 600); 
} 

function second() { 
    alert('called second'); 
    $('.fillColor2').animate({ 
     height: '50px' 
    }, 600); 
} 

$('button').click(function() { 
    first(second);  
}); 

Here is the code what i want on jsfiddle

Я получил эту проблему, то я искал это и приземлился на эту ссылку

Execute jquery function after another function completes

Пожалуйста, дайте я знаю, есть ли какая-либо ошибка, я делаю

Заранее спасибо

+1

Вы не используете 'callback' в своей' первой' функции. – Satpal

ответ

2

Edit, Обновлено

function first(callback) { 
    alert('called first'); 
    $('.fillColor1').animate({ 
     height: '50px' 
    }, 600, callback); 
} 

function second() { 
    alert('called second'); 
    $('.fillColor2').animate({ 
     height: '50px' 
    }, 600); 
} 

$('button').click(function() { 
    first(second);  
}); 

jsfiddle http://jsfiddle.net/zqgfz54b/1/

Альтернативно

function fx(elem, callback) { 
    alert('called ' + elem[0]); 
    $('.fillColor' + elem[0]) 
    .animate({ 
     height: '50px' 
    }, 600, function() { 
     elem.splice(0, 1); 
     callback.call($, elem) 
    }); 
}; 

$('button').click(function() { 
    fx.call($, [1, 2], fx);  
}); 

jsfiddle http://jsfiddle.net/zqgfz54b/2/

+0

он работал, как я хочу, спасибо большое –

+0

@Aman Приветствую :) См. Обновленное сообщение. – guest271314

+0

Что мне делать, если я хочу так последовательно звонить по ряду функций? заранее спасибо –

4

Вы должны фактически вызвать обратный вызов после первой функции:

function first(callback) { 
    alert('called first'); 
    $('.fillColor1').animate({ 
     height: '50px' 
    }, 600, callback); 
} 

function second() { 
    alert('called second'); 
    //Do Code 
} 

$('button').click(function() { 
    first(second);  
}); 
+0

, но при использовании этой функции вызывается одновременно. Я хочу, чтобы все второе после первого завершено. –

+0

Метод анимации jQuery принимает обратный вызов, поэтому вы передаете обратный вызов – tabz100

+0

@Aman '.animate ({height: 50}, 600, callback) ' – Andreas

Смежные вопросы