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 が私のサイトの機能の 1 つにすぎず、ページに id ターゲットがない場合でもたまたま常に読み込まれていることです。これにより、headsup で予測されるエラーが発生します。

エラー:

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();
                }
  });

リンクから最初に見つかったハッシュのみにフィルタリングする必要があると思うため、上記は失敗します。

問題のヒントや別のより良い方法をいただければ幸いです。ありがとう

4

1 に答える 1

2

この行を変更

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

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

そしてそれはうまくいくはずです。

この行の後にこの理由

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

linkHrefですstring

したがって、この場合、オブジェクトをラップする$必要はまったくなく、エラーが発生する可能性があります。$.trimを使用trimして、必須ではない空白をオフにしていますが、このような場合には良い方法です。

于 2012-06-03T07:53:09.877 に答える