0

私は JQuery の初心者で、Superfish スクリプトに基づいたメニューに取り組んでいます。リンクをナビゲートするときに、現在クリックされている項目セットに addClass を保持するのに問題があります。

私のコード:

JS

<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function(){

jQuery("ul.sf-menu").superfish({pathClass:  'corrente'});            

jQuery('#sf-menu li a').click(function() {
      jQuery("#sf-menu li").removeClass('corrente');
      jQuery(this).parents().filter("li").addClass('corrente');
      jQuery("ul.sf-menu").superfish({pathClass:  'corrente'    });
});
});
</script> 

HTML

<ul id="sf-menu" class="sf-menu sf-navbar">
  <li><a href="#">Home</a></li>
  <li><a href="#">Band</a></li>
  <li><a href="#">Solo Projects</a>
      <ul>
      <li><a href="#">Tim</a></li>
      <li><a href="#">Tom</a></li>
      <li><a href="#">John</a></li>
      </ul>
  </li>
  <li><a href="#">Media Appearances</a></li>
  <li><a href="#">Tour</a>
      <ul>
     <li><a href="#">The Reunion Tour</a>
         <ul>
        <li><a href="#">North American Leg</a></li>
     </ul>
         </li>
      </ul>
  </li>
  <li><a href="#">Gallery</a></li>
</ul>

上記の html は正常に動作し、クラス "corrente" は正しく設定されていますが、実際のリンクを挿入して html を変更すると、クラスは正常に設定されますが、宛先ページが読み込まれると失われます。

追加されたクラスを保存し、それを宛先ページに渡す方法について何かアドバイスをいただけますか?

前もって感謝します

4

3 に答える 3

1

新しいページに移動すると、Javascript環境全体がリセットされるため、ページ間でjavascriptに加えられた変更を保持することはできません。

これに対処するための可能な方法:

  1. 新しいページをiframeまたは別のウィンドウで開きます。外側のページ(iframeの場合)または元のページ(別のウィンドウの場合)はリロードされないため、JavaScriptの変更が失われることはありません。
  2. 新しいページに渡すときに、ある種のクエリ文字列をURLに追加し、新しいページ(javascript内)でそのクエリ文字列を解釈して、再度行った変更を行います。
  3. 新しいページに変更を適用できるようにするCookieにデータを入れます。
于 2009-11-23T20:19:23.580 に答える
0

あなたは出来る

  • 追加されたクラスをCookieに保存します
  • サーバーにAJAXリクエストを返して、サーバーの状態を保持します(おそらく、データベースなどのデータソースにあります)。
于 2009-11-23T20:19:03.733 に答える