2017-05-11 16 views
1

我試圖禁用此導航代碼後,屏幕小於1000像素如何禁用屏幕後一個jQuery功能調整

$(document).ready(function(){ 
    var scroll_start = 0; 
    var startchange = $('body'); 
    var offset = startchange.offset(); 
    if (startchange.length){ 
    $(document).scroll(function() { 
     scroll_start = $(this).scrollTop() > 50; 
     if(scroll_start > offset.top) { 
      $("#nav").css('background-color', 'rgba(35,46,63,1)'); 
      $("#nav").css('box-shadow', '4px 0px 10px rgba(0,0,0,0.5)'); 
     } else { 
      $('#nav').css('background-color', 'rgba(35,46,63,0)'); 
      $("#nav").css('box-shadow', '0px 0px 0px rgba(0,0,0,0)'); 
     } 
    }); 
    } 
}); 

任何幫助,將不勝感激!

+0

你能使用$(窗口).WIDTH();在你的函數中有選擇地運行代碼? – cjs1978

回答

0

使用onjQuery API綁定事件,並使用特定的名稱來稍後解除綁定。

$(document).on("scroll.Nav", function() { 

再後來,如果某些條件,無論是在function(){代碼段的回調相遇,或者在另一個代碼段,只需使用

$(document).off("scroll.Nav"); 
+0

有點困惑。我是jQuery的noob。綁定事件是什麼意思? – aaronfty

+0

在這種情況下,這意味着將它們附加到元素上。綁定也可以有更廣泛的用途,例如,在您希望事件處理頁面上尚未存在的元素的場景中。你應該閱讀'on'的jQuery文檔,以便在答案中鏈接更深入的解釋。 –

0

你可以試試這個:

var windowWidth = $(window); 
windowWidth.on('resize', function(){ 
    if(window.innerWidth < 1000){ 
     //do something 
    } 
}) 

在// do something部分中,您可以在其中寫入禁用功能。上面的代碼將在屏幕調整大小並小於1000像素時執行內部函數。

1

基礎上稍加修改你的代碼,我會做如下:

$(document).ready(function(){ 
    var scroll_start = 0; 
    var startchange = $('body'); 
    var offset = startchange.offset(); 
    var doScrollStuff; 

    $(window).resize(function(){ 
    doScrollStuff = $(window).width() >= 1000; 
    }).resize(); 

    if (startchange.length){ 
    $(document).scroll(function() { 
     if (doScrollStuff) { 
     scroll_start = $(this).scrollTop() > 50; 

     if(scroll_start > offset.top) { 
      $("#nav").css('background-color', 'rgba(35,46,63,1)'); 
      $("#nav").css('box-shadow', '4px 0px 10px rgba(0,0,0,0.5)'); 
     } else { 
      $('#nav').css('background-color', 'rgba(35,46,63,0)'); 
      $("#nav").css('box-shadow', '0px 0px 0px rgba(0,0,0,0)'); 
     } 
     } 
    }); 
    } 
});