我正在尝试使用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();
}
});
上述方法失败了,因为我认为我应该只过滤链接中第一个找到的哈希值。
对此问题的任何暗示或其他更好的方式将非常感谢。 感谢
答案 0 :(得分:2)
更改此行
if ($('#' + linkHref).length) {
到
if ($.trim(linkHref).length > 0) {
它应该可以正常工作。
此行之后的原因
var linkHref = $nav.attr('href').split('#')[1];
linkHref
是string
所以在这种情况下根本不需要将它包裹在$
对象周围并且可能导致错误,我使用$.trim来trim
关闭任何非强制性的空格,但是这种情况下的良好做法。