2014-10-22 2 views
0

두 가지 기능이 있습니다. fTwo() 전에 fOne()을 실행해야합니다. jQuery로 두 함수를 순차적으로 실행하십시오.

function fOne() { 
    if ($('.container').width() < 300) { 
    $('.box').each(function(){ 
      $(this).removeClass('largeSize').addClass('smallSize'); 
    }); 
    } 
} 

function fTwo() { 

    var el = $('.myElement'); 

    $(el).each(function() { 
     var pcntH = el.height(), 
      scorH = el.parent().find('.box').outerHeight(true), 
      pcntT = scorH - pcntH - 5; 

     el.css({'position':'relative', 'top': pcntT + 'px'}).fadeIn('slow'); 
    }); 
} 

는 다음과 같이 수행 할 수 있는가 :

생각하지만 작동하지 않습니다
fOne().done(fTwo()); 

...

+4

'폰에서 그것을 확인할 수 있습니다; fTwo();'? – George

+0

@George is right –

+1

어느 기능도 비동기 함수가 아니므로 순서대로 실행하십시오. – tymeJV

답변

0

그냥 콜백 기능을 사용하십시오.

function fOne(callback) { 
    if ($('.container').width() < 300) { 
    $('.box').each(function(){ 
      $(this).removeClass('largeSize').addClass('smallSize'); 
    }); 
    } 
    callback(); 
} 

의 정의에서 fOne(fTwo);으로 전화하십시오. 너는 설정되어있다.

0

것은 당신이) (비동기 폰 그들을 호출하지 않는 경우를; fTwo(); 그렇지 않으면 fOne(); return fTwo();

0

jQuerys whendone은 Deffereds를 사용하기 때문에 비동기 작업을 수행하는 데 사용할 수 있습니다. when으로 전송 된 함수가 실행되고 해당 함수가 완료되면 done에 의해 정의 된 함수가 호출됩니다.

$.when(fOne()).done(function() { fTwo(); }); 

당신은) (api.jquery.com

+2

답변을 편집하여 코드 작동 방식과 OP 문제를 해결하는 방법에 대한 설명을 추가하십시오. 많은 SO 포스터는 초보자이며 게시 한 코드를 이해하지 못합니다. –

+0

함수를 호출하거나 참조로 전달해야합니까? – Scimonster

+0

@ialarmedalien 잘 부탁드립니다. 업데이트 됨. –

관련 문제