0

その要素に一致するキーワードが見つかったときに、その要素にクラスを追加したいhref

html、

<ul class="menu-header">
<li><a href="http://localhost/website/#/home/" class="button-header current">HOME</a></li>
<li><a href="http://localhost/website/#/gallery/" class="button-header">GALLERY</a></li>
<li><a href="http://localhost/website/#/people/" class="button-header">PEOPLE</a></li>
<li><a href="http://localhost/website/#/contact/" class="button-header">Contact</a></li>
</ul>

したがって、キーワードが「gallery」の場合は、その要素に「current」を追加し、他の要素の「current」クラスを削除する必要があります。

jquery、

var request = "gallery";

// Add the class to the menu.
$(".menu-header li").each(function(){

    var object = $(this); // which is <li>
    var siblings = object.siblings(); // other <li>s

    // Clean all siblings' style.
    siblings.find("a").removeClass('current');
    var array_link = $("a",this).attr("href").split('/');

    if ($.inArray(request, array_link) == 1) $("a.button-header",object).addClass("current");

});

すべての要素から「current」クラスを削除できましたが、「current」クラスを追加できませんでした。

私が見逃したアイデアはありますか?

4

1 に答える 1

6

これを達成するために、自分でそれらすべてをループする必要はありません。

$(".menu-header li a").removeClass("current").filter("[href*=gallery]").addClass("current");

現在のクラスを持っているクラスから削除してから、に一致するhrefを持つクラスli aに追加します。ここでも変数があります:li agallery

var request = "gallery";
$(".menu-header li a").removeClass("current").filter("[href*=" + reqeust + "]").addClass("current");
于 2012-09-21T21:45:20.690 に答える