2013-10-06 53 views
0

我遇到了一些问题,解决了为什么我的Jquery被忽略。下面是Jquery的:如何使.top和.offset一起工作

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

这是我试图去很好地滚动,如果我用.offset('top')几乎对页面的一部分,jQuery的,但抛出了这个错误:

Uncaught TypeError: Cannot use 'in' operator to search for 'using' in top

这使jquery跳跃,而不是很好地滚动。

Jquery的代码的其余部分:

// 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'); 
     } 
    }); 
}); 

});

有没有人遇到过这种情况,并找到解决方案?

+2

如果您想使用单个'var'语句声明多个值,那么您应该用逗号而不是分号分隔它们。 – BYossarian

+2

...因为使用了分号,你就结束了'var',下一个语句只是一个任务,所以你会堕入[*隐式全局的恐怖*](http:// blog.niftysnippets.org/2008/03/horror-of-implicit-globals.html)。 –

回答

3

您正在试图获得功能offset的财产top

$(href).offset.top 

jQuery的对象有一个方法.offset(),其中有一个属性.top运行的结果。 也许这就是你想要使用的?

$(href).offset().top 

我已经调查了错误信息,这是非常明显的,它发生在the setOffset call jQuery中。 看起来offset功能正在调用参数"top",这是不正确的。

如果没有所有的代码我都无法进一步调试,但请检查您的scrollTo参数是否正确拼写正确,并且错误确实发生在代码中的该行。

+0

我试图使用它,但它会引发此错误; “未捕获的类型错误:无法读取未定义的属性”顶部“,并在我的响应菜单jquery下面停止。任何想法/ – MaxwellLynn

+0

@MaxwellLynn,在你的问题中,你声称你尝试过'.offset('top')'。请注意,它与'.offset()。top'不同。你能证实你已经尝试过吗? – Denis

+0

确实我有。有任何想法吗? – MaxwellLynn

相关问题