我似乎无法找到问题我试图使用jQuery pluging easing.js以及jquery-1.11.0.min.js
创建一个简单的简易滚动效果$(function(){
//catch all clicks
$("a").click(function(){
// check if it has a #
if(this.hash){
// get rid of the # sign
var hash = this.hash.substr(1);
// get position ofd the links name
var $toElement = $("a[name="+hash+"]");
var toPosition = $toElement.position().top;
// scroll animate to postion
$("body,html").animate({
scrollTop : toPosition
},2000,"easeOutExpo");
return false;
}
});
});
即使我这样尝试,我仍然会得到同样的错误:
$(function(){
//catch all clicks
$("a").click(function(){
// check if it has a #
if(this.hash){
// get rid of the # sign
var hash = this.hash.substr(1);
// get position ofd the links name
var $toElement = $("a[name="+hash+"]");
var $toPosition = $toElement.position().top;
// scroll animate to postion
$("body,html").animate({
scrollTop : toPosition
},2000,"easeOutExpo");
return false;
}
});
});
答案 0 :(得分:3)
我猜是
var $toElement = $("a[name="+hash+"]");
与任何元素都不匹配。
然后,$toElement.position()
为null
。
因此,
$toElement.position().top;
抛出错误。
要解决此问题,您可以尝试
var position = $("a[name="+hash+"]").position();
if(!toPosition) return false;
var topPosition = position.top;