0

私はそのようなhtmlコードを持っています:

<ul class="myClass">
    <li><a href="url1.html">first link</a></li>
    <li><a href="url2.html">second link</a></li>
    <li><a href="url2.html">third link</a></li>
    <li><a href="url3.html">fourth link</a></li>
</ul>

リンクを押すと、押されたリンクの次のプロパティ文字列class="active"に書き込む必要があるという考え方です。たとえば、

<li><a href="url1.html">first link</a></li>`

それを押すと、jQuery関数はそれを次のように変更する必要があります。

<li><a class="active" href="url1.html">first link</a></li>

しかし、私のjQuery関数は実際には機能しません。助けていただければ幸いです。jQuery関数のソースは次のとおりです。

$(document).ready(function(){
   var currentUrl = document.location.pathname;
   $('#myClass').each(function() {
       if ( currentUrl == $(this).children('a').attr('href')) {
           $(this).children('a').addClass('active');
       }
   });
});

UPDATEログを入れconsole.log(currentUrl +"=="+ $(this).children('a').attr('href')); たところ、状態が未定義であるとのことでした。「if」条件は実行されないと思います。なぜなら、私はand else条件を入れて、あちこちに置いてalertいるので、プレス呼び出しのアラートとif条件は実行されないからです。

4

3 に答える 3

2

#myClassIDセレクターであり、クラスセレクターではありません。あなたが欲しい.myClass

children()属性liを持たず、一致しない子(要素)のみを選択します。hrefa

あなたはリストアイテムをループするよう#myClassになりたいのです。.myClass > li

于 2012-06-15T13:28:05.760 に答える
1

あなたが達成しようとしていることは、すぐに次のように書くことができます:

$(document).ready(function(){        
     var curl = document.location.pathname;  //current url
     curl = curl.substr( curl.lastIndexOf('/')+1 );
     $('.myClass a[href="'+curl+'"]').addClass('active');
});
于 2012-06-15T13:34:20.273 に答える
-1

jQueryクリックイベントを使用する

$(document).ready(function(){
     $('.myClass a').click(function() {
         $(this).addClass('active');
     });
});

この答えはあなたの質問に対処します:

「リンクを押すと、押されたリンクに次のプロパティ文字列class = "active"が書き込まれるという考え方です。たとえば、

<li><a href="url1.html">first link</a></li>`

それを押すと、jquery関数はそれを次のように変更する必要があります。

<li><a class="active" href="url1.html">first link</a></li>

「」

別の問題があったと思いますが、質問からは明らかではありませんでした。

于 2012-06-15T13:35:17.433 に答える