2013-10-06 97 views
0

我已經取得了一些jQuery的,你可以用下面這個小提琴看到: http://madaxedesign.co.uk/dev/Test/ http://jsfiddle.net/x82mU/1/如何解決這個jquery錯誤?

代碼:

$(document).ready(function() { 
var $root = $('html, body '); 
$('.scroll a').click(function(e) { 
    var href = $.attr(this, 'href'); 
    $root.animate({ 
     scrollTop: $(href).offset().top 
    }, 500, function() { 
     window.location.hash = href; 
    }); 
    return false; 
}); 

// Responsive menu 
$(function() { 
    var pull  = $('#pull'), 
     menu  = $('nav ul'), 
     menuHeight = menu.height() 

    $(pull).on('click', function(e) { 
     e.preventDefault(); 
     menu.slideToggle(); 
    }); 

    $(window).resize(function(){ 
     var w = $(window).width(); 
     if(w > 320 && menu.is(':hidden')) { 
      menu.removeAttr('style'); 
     } 
    }); 
}); 
}); 

但它拉過與此錯誤: 遺漏的類型錯誤:無法讀取屬性「頂'的undefined

這是阻止我的下一塊Jquery工作。

我想知道是否有人能讓我知道爲什麼,或給我一個解決方案?

非常感謝

+0

是'$(本).attr(「href」屬性)' – omninonsense

回答

2

你正試圖從href獲得選擇這不那裏有很多菜單項。

即:

<li><a href="#">Home</a></li> 
    <li><a href="#aboutUs">About us</a></li> 
    <li><a href="#">Portfolio</a></li>   
    <li><a href="#">Contact us</a></li> 

$(href).offset().top //here offset() of an empty jquery object is undefined. 

不是一個問題,但你可以做this.href,而不是$.attr(this, 'href')

試試這個:

$('.scroll a').click(function(e) { 
    var href = $(this).attr("href"), $el = $(href), top=0; //default top to 0 
     if($el.length) //if there is element matching the href 
      top = $el.offset().top; //set the top 
    $root.animate({ 
     scrollTop: top //now scroll 
    }, 500, function() { 
     window.location.hash = href; 
    }); 
    return false; 
}); 

Fiddle

+0

所以我應該把.offset(href),以便它有東西來識別它? – MaxwellLynn

+0

@MaxwellLynn你想做什麼?您在許多菜單項中都沒有將元素指定爲href。 – PSL

+0

我試圖讓我們的鏈接滾動很好,而不是跳轉到關於我們頁面的一部分。這似乎表現不錯。不過,我有上述錯誤,這是打破我的下一個代碼是一個下拉導航,用於移動。如果您最小化屏幕,您可以從提供的madaxedesign鏈接中看到此操作。 – MaxwellLynn

1
var href = $(this).attr('href'); 

更新的評論

scrollTop: $(href).offset().top 

工作,

href 

變種可靠必須是頁面上的元素。

所以如果你的鏈接是像

<a href="#an_id_to_a_div">...</a> 

會被罰款。

jQuery的DOM對象創建

$(dom_element) 

目標html標籤,類ID或現有的DOM對象(窗口,文件..)

+0

這就是幫助但至今仍保持着同樣的錯誤,防止它讀取下一個片的jQuery。有可能你可能知道另一個原因? – MaxwellLynn

+0

感謝您的傳奇。 – MaxwellLynn