アップデート:
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)。アクセスしているリンクに基づいて、適切なアコーディオン「ドロワー」が開きます。
ただし、アクティブなクラスは現在のリンクに追加されていません。
何か案は?