2012-09-19 36 views
2

我的網站上的所有內容都能正常工作,但由於某種原因,每當我單擊我網站上任何地方的鏈接時,控制檯中都會顯示一條錯誤消息。錯誤與此線路編碼在這裏做:每當我點擊一個鏈接時發生腳本錯誤

jQuery(function($){ 
    $('.navbar a, .scroll a, .smoothscroll a').bind('click',function(event){ 
    var $anchor = $(this); 

    $('html, body').stop().animate({ 
     scrollTop: $($anchor.attr('href')).offset().top 
    }, 850,'easeInOutExpo'); 

    event.preventDefault(); 
    }); 
}); 

而且我得到的錯誤是這樣的:

「SCRIPT5007:無法獲取的財產‘頂’值:對象爲空或未定義 custom.min.js,第6行字197"

它是突出確切的代碼是上面這部分代碼:

$('html, body').stop().animate({ 
    scrollTop: $($anchor.attr('href')).offset().top 
}, 850,'easeInOutExpo') 

我所知道的是,當我刪除了上面的代碼,我滾動到鏈接停止工作,例如這些網頁:

http://www.northtownsremodeling.com/things-to-know.php

你可以看到彈出的錯誤發生,並留在控制檯輕鬆地將一個網頁,就像一個過濾器這樣的:

http://www.northtownsremodeling.com/bathroom/

,然後點擊過濾器按鈕之一。

最終,我正在嘗試使其滾動至設置仍然有效,但不會再出現此錯誤。我很久以前就製作了這個腳本,而且我真的很困惑,如果一切正常,否則會導致這個錯誤?

謝謝!

+0

是否'的console.log($($ anchor.attr( 'HREF')))'輸出所希望的值在第一名? – inhan

+0

嗯,我似乎沒有'.navbar a,或者.scroll a',我只有div類,其中有滑動滾動,並且它呼籲#平滑地滾動到。我剛剛刪除了上述兩個,仍然得到錯誤,錯誤指向了「。頂部「屬性,說:」未捕獲的類型錯誤:無法讀取未定義的屬性'頂部' – abass

回答

5

您遇到的問題是,出現錯誤的代碼是滾動到預定義的div,並且您在url的標籤(點擊鏈接的href屬性)中有其id(目標div)。

這是當你點擊「正常」的鏈接,因爲它不包含主題標籤是現有頁面上的元素的ID問題,所以$($anchor.attr('href'))給空數組,因爲它可以與IE $("http://www.northtownsremodeling.com/alliances.php")選擇沒有這樣的元素,所以,在這種情況下,offset()是未定義的,並給你一個錯誤。

爲了解決這個問題,替換:

$('html, body').stop().animate({ 
    scrollTop: $($anchor.attr('href')).offset().top 
}, 850,'easeInOutExpo'); 

與:

// get target div to scroll to 
var target = $($anchor.attr('href')); 
// if target is valid, scroll to 
if(target && target.offset()){ 
    $('html, body').stop().animate({ 
     scrollTop: target.offset().top 
    }, 850,'easeInOutExpo'); 
} 
+0

好吧,那工作...雖然現在我非常困惑,我甚至有什麼代碼,我有什麼代碼這是沒有必要的..你需要什麼信息來了解發生了什麼? – abass

+0

我剛剛解釋過:) –

+0

好吧,非常感謝,這工作得很好,我做錯了這種方式嗎?我覺得我很喜歡種類的貧民窟用你的解決方案來操縱它,我覺得我只是簡單地使用錯誤的代碼來完成我想要做的事情。把你的解決方案放進去,它工作得很好,非常感謝! – abass

1

演示:http://jsfiddle.net/SWgYD/

我想這是因爲href屬性不包含正確的選擇。如果鏈接符合ID爲nav的塊,則鏈接的href屬性應爲#nav

您應該只將事件處理程序綁定到導航鏈接。

相關問題