2013-10-03 45 views
1

基本上我的工作,只有滾動一次瀏覽器窗口已經達到了它一個側邊欄滾動欄拋出JavaScript錯誤「無法調用空的‘抵消’

更新2:

這是代碼我目前正在工作:

$(function() { 
var $sidebar = $("#sidebar"), 
    $window = $(window), 
    offset  = $sidebar.offset(), 
    topPadding = 15; 

    $window.scroll(function() { 
     if ($window.scrollTop() > offset.top) { 
      $sidebar.addClass('fixed'); 
     } else { 
      $sidebar.removeClass('fixed'); 
     } 
    }); 
}); 

我不再收到錯誤,但是滑動不會在這裏工作這撥弄顯示了預期的效果,我的CSS是完全一樣的:http://jsfiddle.net/dKDJz/647/

+1

你已經jQuery的'.js'文件加載? – Sergio

+0

在js小提琴默認情況下,它包裝你的代碼在DOM準備好了,你有沒有嘗試包裝你的代碼ina文件準備好了? –

+0

@Sergio是的,我已經運行了一個console.log來測試並設置了var $ sidebar。 – user2766423

回答

2

如果這個代碼在你的小提琴,你可能想檢查兩件事情

  • 包裝你的代碼準備功能

這可能是您的代碼在元素存在/呈現之前正在運行。在這種情況下wrapp你的代碼與ready功能

$(function() { 
    // your code 
}); 
  • 檢查要載入jQuery庫文件。

如果您沒有加載jQuery庫文件,請將其添加到頁面中的標記內。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
+0

我做了這兩個建議,但它仍然不起作用,但現在沒有錯誤 – user2766423

+0

你有一個實時鏈接?如果'console.log($ sidebar);'loggs爲NULL,那麼jQuery不會加載,否則你將有一個jQuery對象,不是NULL,而且從其他評論你寫了關於另一個錯誤「沒有方法'ready'「。你使用的是哪個版本的jQuery? – Sergio

+0

不幸的是,這個網站並沒有生效,但我可能很快就會得到一個例子,因爲我的console.log($ sidebar);現在,它在控制檯中什麼也沒有顯示。我正在使用上面爲jquery輸入的內容, – user2766423

1

您需要將您的選擇器放入一個doc準備好的包裝中。 本質上#sidebar不可用當您嘗試運行選擇器。

$(document).ready(function(){ 


    var $sidebar = $("#sidebar"), 
    $window = $(window), 
    offset  = $sidebar.offset(), 
    topPadding = 15; 

    $window.scroll(function() { 
     if ($window.scrollTop() > offset.top) { 
      $sidebar.addClass('fixed'); 
     } else { 
      $sidebar.removeClass('fixed'); 
     } 
    }); 
}); 
+0

嘗試了這一點,並意識到我收到了一個不同的錯誤,「對象#沒有方法'準備就緒' – user2766423

1
var topPadding = 15; 

$(window).scroll(function() { 
    //alert($(window).scrollTop()) 
    if ($(window).scrollTop() > $("#sidebar").offset().top) { 
     $("#sidebar").addClass('fixed'); 
    } else { 
     $("#sidebar").removeClass('fixed'); 
    } 
});