2016-07-15 10 views
0

正しいoffset()。top値を取得するには、アニメーションの終了まで待たなければなりません。アニメーションが停止するのを待つ

私はさまざまな方法(約束どおり)を試しましたが、何もうまくいかず、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効果の1つ。 – gromax

答えて

2

$.whenへの引数は、約束/据え置きでなければなりません。 .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

関連する問題