2

私は次のようなURLを持っています:

http://www.website.co.uk/en-us/aboutus/thegroup/test.aspx

このページにULLIメニューがあります。

<ul>
    <li><a href="/aboutus/thegroup/test.aspx">Test</a></li>
    <li>Hello</li>
    <li>Bye</li>
    <li>Something</li>
    <li>Cars</li>
</ul>

すべてのページにメニューがあり、jqueryを使用してそのページのimを確認したいと思います。もし私がそうなら、A / liを太字にして、ユーザーがページ上にいることを認識できるようにします。

私は以下を試しました:

$(document).ready(function () {
  if(window.location.href.indexOf("test")) // 
     {
        alert("your url contains the name test");
     }
});

しかし、URL文字列の値をハードコーディングする必要のないもののようなID。ユーザーがUL/LIにさらにリンクを追加することを決定したかのように、jqueryはリンクとURLを自動的にチェックし、クラスをLIに追加する必要があります(スタイルを設定できるようにするため)。

うまくいけば、それは十分な情報です。

4

4 に答える 4

4

問題は、値が見つからない場合にindexOf()メソッドが戻るためです。-1現在のように結果をブール値に強制するのではなく、その値を確認する必要があります。これを試して:

$(document).ready(function () {
    var loc = window.location.href;
    $("ul a").each(function() {
        if (loc.indexOf($(this).attr("href")) != -1) {
            $(this).addClass("current");
        }
    });
});

セレクターをもう少し具体的にする必要があります。#menu a

于 2012-04-18T10:25:47.553 に答える
2

これ?

$('ul#menu a').each(function() {
   if(window.location.href.indexOf($(this).attr('href')) !== -1) {
      $(this).closest('li').addClass('yourClass');
   }
});

メニューバーを同じページにある他のメニューバーと基本的に区別するために、IDを追加しましたmenu。また、引数で検索された文字列が見つからない場合は-1を返します。ulul!== -1indexOf

于 2012-04-18T10:25:15.070 に答える
2

indexOf文字列が含まれていない場合は-1を返します。

(document).ready(function () {
  if(window.location.href.indexOf("test") != -1) // 
     {
        alert("your url contains the name test");
     }
});
于 2012-04-18T10:26:17.040 に答える
1
$(document).ready(function () {
  var liTest = $('ul > li'); // ' was missing
  liTest.each(function() {
     if(window.location.href == $('a', this).attr('href')) // 
     {
        $(this).css('font-weight', 'bold');
        return;
     }
  });
});
于 2012-04-18T10:26:08.017 に答える