2012-06-03 31 views
1

我试图使用scrollspy返回第一个找到匹配的哈希值,但在http://twitter.github.com/bootstrap/javascript.html#scrollspy的例子似乎不工作,并且还出现了一个平视:从链接

Heads up! Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the dom like <div id="home"></div>. 

钍的问题是scrollspy只是在我的站点中有一个功能,即使在页面中没有id目标时,它也会始终加载,并且这会导致错误,正如平视图所预测的那样。

错误:

uncaught exception: Syntax error, unrecognized expression: # 

同样的错误也发生在我使用scrollTo.js插件。

所以我想添加一个条件,只有在DOM中存在id目标时才激活scrollspy。

$('.nav-scrollspy').each(function() { 
       var $nav = $(this).find('a'); 
       var linkHref = $nav.attr('href').split('#')[1]; 
       if ($('#' + linkHref).length) { 
       $(this).scrollspy(); 
       } 
    }); 

上面的失败,因为我认为我应该过滤到链接的第一个发现的哈希。

任何暗示的问题或其他更好的方式将非常感激。 感谢

回答

2

改变这一行

if ($('#' + linkHref).length) { 

if ($.trim(linkHref).length > 0) { 

,它应该工作的罚款。

此行

var linkHref = $nav.attr('href').split('#')[1]; 

linkHref后这样做的原因是string

所以它包裹$对象是没有必要的在这种情况下,并可能导致错误,我使用$.trimtrim也不是强制的任何空格,但是在这种情况下是一个好习惯。

+0

谢谢。它确实解决了错误,但是现在引导程序抱怨:$ element.on不是函数。任何提示?我认为,这与我的jQuery版本1.4.4更相关,对吧?我的CMS附带该版本:( – swan

+0

)您确定此代码块有错误吗?您是否使用任何其他引导程序功能? –

+0

您可以删除错误,谢谢,但后来另一个错误显示我怀疑有关到我以前的jquery 1.4.4,其中没有.on和.off的引导程序。 – swan