24

現在、Web アプリケーションに jQuery、Twitter Bootstrap、および AngularJS を使用しています。私はルーティングを試みてきましたがSyntax error, unrecognized expression: #/time、時間タブをクリックしようとするたびにjQueryが私に与え続けます。# 記号が原因であることを除いて、このエラーの原因はわかりません。私は広範囲にグーグルで検索しましたが、役に立ちませんでした。これが私のコードです:

<ul class="nav nav-tabs">
  <li class="active">
    <a href="#/main" data-toggle="tab" id="main-tab">Main</a>
  </li>
  <li>
    <a href="#/time" data-toggle="tab" id="time-tab">Time Reports</a>
  </li>
</ul>

AngularJS ルーティングに使用するため、スラッシュを保持する必要があります (つまりindex.html#/mainindex.html#/timediv の 1 つで異なるコンテンツをロードします)。このエラーの原因は何ですか?

4

4 に答える 4

4

この問題は、jquery v3.* および bootstrap3 を使用している場合に発生します。これは、「#」が有効なセレクターではなくなったためです (代わりに使用して、ドロップダウンの属性 href="#" および data-target="#" を削除することで修正できます。次のようになります。

<button data-toggle="dropdown" class="dropdown-toggle">YOUR_CODE</button>
 <ul class="dropdown-menu">
   <li><a href="javascript:void(0)" class="your-class">YOUR_TEXT</a></li>
   <li><a href="javascript:void(0)" class="your-class">YOUR_TEXT</a></li>          
 </ul>

タブの場合、hrefの「#/」を「#some_your_id」に置き換えることで修正されます。

于 2017-05-18T12:32:49.287 に答える
0

I have my case, I past many times regarding this issue, so here I just wanted to share my case,

There was a code like this:

   handleTabs: function () {
    //var hash = document.location.hash;
    //var prefix = "tab_";
    //if (hash) {
    //  $('.nav a[href='+hash.replace(prefix,"")+']').trigger('click');
    //}
    //// Change hash for page-reload
    //$(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
    //  window.location.hash = e.target.hash.replace("#", "#" + prefix);
    //});
},

I skip those lines and my problem resolved.

It was a conflict with hashtagh slash #/ handling in the page between this code and ui.router angularJS

于 2016-01-08T12:28:51.010 に答える