0

アップデート:

URLに正規表現を使用してみましたが、動作します:

var url = window.location.pathname, 
urlRegExp = new RegExp(url.replace(/\/$/,'') + "$");

$("#accordion a").each(function()
{
    if(urlRegExp.test(this.href.replace(/\/$/,'')))
    {
        $(this).addClass("active-sidebar-link");
    }
});

jQuery UI アコーディオン ウィジェットを使用して、Web サイトのサイドバー ナビゲーション メニューを作成しています。 http://jqueryui.com/demos/accordion/

次のコードがあります。

// create accordion
$( "#accordion" ).accordion(
{
    header: '> li, h3:not(> li > ul)',
    collapsible: true,
    autoHeight: false,
    navigation:true 
});

// Add active class to active sidebar links
$("#accordion a").each(function() 
{
    if (this.href == window.location || this.href == document.location.protocol + "//" + window.location.hostname + window.location.pathname)
    {
        $(this).addClass("active-sidebar-link");
    }
});

アコーディオンが機能し、「navigation: true」オプションも機能します (http://jqueryui.com/demos/accordion/#option-navigation)。アクセスしているリンクに基づいて、適切なアコーディオン「ドロワー」が開きます。

ただし、アクティブなクラスは現在のリンクに追加されていません。

何か案は?

4

1 に答える 1

0

href 値に対して検索機能を実行します。複数のページへのリンクがある場合は、コードをさらに進めて を含めることができますがwindow.location.pathname、ドメイン名の検索を開始するには、次のようにします。

$("#accordion a").each(function() 
{
    if (this.href.search(window.location.hostname) != -1)
    {
        $(this).addClass("active-sidebar-link");
    }
});​

または、上記のコメントで述べたように、代わりに正規表現を使用することもできます。

于 2012-05-12T20:39:50.737 に答える