0

このコードは、領域全体をスキップすることを除いて、完全に機能し$(window).resizeます。1 つの変数を除いてすべてを削除すると、「修正」されたように見えますが、明らかにうまくいきません。

ここで明らかに明らかな問題を見逃していますか? コンソールにエラーはありません。あなたがそれを選んだり、完全なjavascriptを見たい場合は、ここにデモがあります: http://jdsn.co/demo/reader.html

if( main_reader_height + offset_height > initviewport ) {
    $('.main_reader footer').waypoint(function(event, direction) {
        if (direction === 'down') {
            $('.nav_items, .nav_prev, .nav_next').addClass('snap');
            $(window).resize(function() {
                window.offset = $('.main_reader article').offset().top;
                window.viewport = $(window).height();
                window.main_height = $('.main_reader article').height();
                window.bottom_offset = window.viewport - window.offset - window.main_height - 80
                $('.nav_next').height(viewport - offset - bottom_offset - 80);  
            });
            $('.snap').height(window.bottom_offset)
        }
        else {
            $('.nav_items, .nav_prev, .nav_next').removeClass('snap');
        }
    }, {
      offset: '100%'  // middle of the page
});
4

1 に答える 1

0

2 つの問題があります。

  1. .resize() イベントは、ウェイポイントからの最初のコールバック後にのみサブスクライブされます。さらに、ウェイポイント イベントを取得するたびに、.resize() への新しいサブスクライバーを作成するため、問題が発生する可能性があります。
  2. window.これらの変数を定義するときに使用している本当の理由はありますか? これにより、それらがメイン ウィンドウ オブジェクトにアタッチされますが、これは実際には必要なく、他の問題を引き起こす可能性があります。

そこから、それはあなたが期待している動作に依存します。コードを見ても、達成しようとしていることがよくわかりません。さらに詳しく説明すると、より役立つ答えが得られる可能性があります。

于 2012-06-10T02:08:22.743 に答える