2016-07-15 6 views
0

올바른 오프셋(). 최고 값을 얻으려면 애니메이션이 끝날 때까지 기다려야합니다.애니메이션이 끝날 때까지 기다리는 중입니다.

나는 (약속처럼) 다른 방법을 시도했지만 아무 것도 작동하지 않습니다 : console.log가 즉시 적용됩니다. 왜 ? 그리고 내가 뭘 할 수 있니? 내 시도의

하나 :

$('#main').on('click', 'section > span', function() { 

    el = $(this); 

    var effect = function() { 
     return $('.content').removeClass('showing').addClass('hiding').slideUp(300).attr("aria-hidden","true").closest('section').css('min-height','0'); 
    } 

    $.when(effect()).done(function() { 
     var showTop = el.offset().top - 110; 
     console.log(showTop); 
     $('html, body').animate({scrollTop:showTop}, 'fast', function() { 
     content.removeClass('hiding').addClass('showing').removeAttr("aria-hidden").slideDown(600); 
     }); 
    }); 

} 

감사합니다.

+0

기다리고 싶으신가요? –

+0

var 효과에서 하나. – gromax

답변

2

$.when의 인수는 promise/Deferred 여야합니다. .promise()을 사용하면 효과가있는 요소에 대한 약속을 얻을 수 있습니다.

var effect = function() { 
    $('.content').removeClass('showing').addClass('hiding').slideUp(300).attr("aria-hidden","true").closest('section').css('min-height','0'); 
    return $('.content').promise(); 
} 
+0

완벽! 고마워요! 지연/약속을 이해하는 데 문제가 있습니다 ... – gromax

관련 문제