0

サイドバーを固定するために書き込もうとしている関数があります。

次のように、div を position:fixed に設定すると問題なく動作しますが、ページを上にスクロールしたときにのみ、div クラスは position:relative に変更されません。

私の構文の明らかな欠陥を見つけられる人はいますか?

$(window).scroll(function() {
var scrollTop = $(window).scrollTop(),
    divOffset = $('#sidebar').offset().top,
    dist = (divOffset - scrollTop);

if (dist > 50) {
    $('#sidebar').css({position:"relative",top:""});
} else if (dist < 50) {
    $('#sidebar').css({position:"fixed",top:"0px","margin-left":"730px"});
}
});
4

1 に答える 1

1

これは ではありませんif/elseif/else ifデフォルトelse条件なしです。単純な古いものを使用してdistequalsのケースをカバーしたいと思うでしょう:50if/else

if (dist > 50) {
    $('#sidebar').css({position:"relative",top:""});
} else {
    $('#sidebar').css({position:"fixed",top:"0px","margin-left":"730px"});
}

これらの条件のいずれかが実行されないことはありません (構文エラーはありません)。alertまたはを使用console.logして、スクリプトのどの部分が実行されているかを確実に判断できます。

問題は別の場所にあるようです。

于 2013-06-19T20:26:56.117 に答える