返回链接中找到的第一个匹配的哈希值

时间:2012-06-03 07:47:02

标签: jquery twitter-bootstrap

我正在尝试使用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();
                }
  });

上述方法失败了,因为我认为我应该只过滤链接中第一个找到的哈希值。

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

1 个答案:

答案 0 :(得分:2)

更改此行

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

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

它应该可以正常工作。

此行之后的原因

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

linkHrefstring

所以在这种情况下根本不需要将它包裹在$对象周围并且可能导致错误,我使用$.trimtrim关闭任何非强制性的空格,但是这种情况下的良好做法。