2016-05-28 17 views
0

ページをスクロールすると、ヘッダーがアニメーション化されます。それはslideUp、クラスを追加し、slideDownする必要があります。SlideUpコールバックで要素にクラスが追加されない

slideUpおよびslideDownは期待どおり動作しますが、クラスheader-smallは追加されません。どうして?

$(function() { 
 
    var moved = false, 
 
     header = $('header'); 
 
    $(window).scroll(function() { 
 
    if ($(document).scrollTop() > 20) { 
 
     if (moved == 'false') { 
 
     header.slideUp(500, function() { 
 
      $(this).addClass('header-small').slideDown('slow'); 
 
     }); 
 
     moved = true; 
 
     } 
 
    } else { 
 
     header.slideUp(500, function() { 
 
     $(this).removeClass('header-small').slideDown('slow'); 
 
     }); 
 
     moved = false; 
 
    } 
 
    }); 
 
});
body, 
 
html { 
 
    height: 300%; 
 
} 
 

 
header { 
 
    position: fixed; 
 
    height: 2em; 
 
    background: lightblue; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
} 
 

 
.header-small { 
 
    font-size: .75em; 
 
    background: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header> 
 
    This is a header with text 
 
</header>

私は$('header')$(this)を変更しようとしたが、同じ結果ました。あなたは、文字列を実装している

+2

(移動== '偽')場合は、「false''文字列が使用、truthly JavaScriptでの値です

のように引用符なしブール値でなければなりません'移動=== false' https://jsfiddle.net/fhqh1tx2/ –

+0

うわー...それは答えです...ありがとう。 – LinkinTED

+0

@A.Wolff、答えとして追加して受け入れます – LinkinTED

答えて

関連する問題