2017-04-30 8 views
0

このスクリプトの下部にあるif else文で、ウィンドウの幅に基づいてリフレッシュとサイズ変更に基づいて更新できるresize関数を追加しようとしています。ヒーローの下向き矢印ボタンをクリックした場合を除き、すべてが正しく機能しています。オフセットのトップ値はサイズ変更時に更新されません。代わりにresize関数の更新を正しく実行する方法がわかりません

現在のスクリプト - これはそれを破るために縫い目 - 私が試した

$(function() { 
    var windowW = $(window).width(); 
    $('a[href*="#"]:not([href="#"])').click(function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if ((target.length) && (windowW > 770)) { 
     $('html, body').animate({ 
      scrollTop: (target.offset().top) + 2 
     }, 450); 
     return false; 
     } else { 
      $('html, body').animate({ 
      scrollTop: (target.offset().top) - 86 
      }, 450); 
      return false; 
     } 
    } 
    }); 
}); 

物事。

$(window).resize(function(e) { 
    var windowW = $(window).width(); 
    $('a[href*="#"]:not([href="#"])').click(function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if ((target.length) && (windowW > 770)) { 
     $('html, body').animate({ 
      scrollTop: (target.offset().top) + 2 
     }, 450); 
     return false; 
     } else { 
      $('html, body').animate({ 
      scrollTop: (target.offset().top) - 86 
      }, 450); 
      return false; 
     } 
    } 
    }); 
}); 

DEVのLINK http://www.alexcoven.com/dev/element

+0

スクリプト全体を更新する必要がありますか? 'windowW'変数のように見えますか? – Sam0

+0

うん、ちょうどwinowW変数 – alcoven

答えて

0

これが私のために

$(function() { 
    var windowW = $(window).width(); 
    $(window).resize(function(){ 
    windowW = $(window).width(); 
    }); 
    $('a[href*="#"]:not([href="#"])').click(function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if ((target.length) && (windowW > 770)) { 
     $('html, body').animate({ 
      scrollTop: (target.offset().top) + 2 
     }, 450); 
     return false; 
     } else { 
      $('html, body').animate({ 
      scrollTop: (target.offset().top) - 86 
      }, 450); 
      return false; 
     } 
    } 
    }); 
}); 

を働いたスクリプトです@ Sam0のおかげで、私は追加するために必要なすべてのサイズ変更にwindowW変数を更新機能でした!

1

は、あなただけのサイズ変更にwindowW変数の更新を試すことができます。次のパターンでは、新しいクリックごとに'a[href*="#"]:not([href="#"])'も再評価されます。失敗した場合のコメントによるフィードバック

$(function() { 
    var windowW = $(window).width(); 
    $(window).resize(function(){ 
    windowW = $(window).width(); 
    }); 
    $('body').on('click', function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if ((target.length) && (windowW > 770)) { 
     $('html, body').animate({ 
      scrollTop: (target.offset().top) + 2 
     }, 450); 
     return false; 
     } else { 
      $('html, body').animate({ 
      scrollTop: (target.offset().top) - 86 
      }, 450); 
      return false; 
     } 
    } 
    },'a[href*="#"]:not([href="#"])'); 
}); 
+0

ありがとうありがとう!私はあなたのスクリプトの上部を使いました。底部が滑らかなスクロールを無効にした。 – alcoven

関連する問題