2012-05-12 9 views
0

UPDATE構築ナビゲーションリンクにアクティブなクラスを追加します。jqueryの - jqueryのUIのアコーディオンで

が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アコーディオンウィジェットを使用していますが私のウェブサイトのサイドバーナビゲーションメニューを構築する。

// 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"); 
    } 
}); 

アコーディオン作品と: http://jqueryui.com/demos/accordion/

私は、次のコードを持っている "ナビゲーション:真の" オプションも動作します(http://jqueryui.com/demos/accordion/#option-navigation)訪問しているリンクに基づいて、適切なアコーディオンの「引き出し」を開きます。

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

アイデア?

+0

正規表現が必要な場合があります。 href = "http://www.website.com"とhref = "http://website.com/"の違いはどうですか? – bozdoz

+0

まだ正規表現が動作していないと試してみました。質問する正規表現コードを追加しました。 – IntricatePixels

答えて

0

私はhref値の検索機能を実行します。あなたが複数のページへのリンクを持っている場合は、window.location.pathnameを含めるようにさらにコードを取ることができるが、ここでは、ドメイン名の検索には良いスタートだ:

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

それとも、私は上記の私のコメントで言ったように、あなたがかもしれません代わりに正規表現を使用します。

+0

Regexが勝者のおかげです!私がこのサイトで使っているプラ​​ットフォームがうまくいかず、キャッシュが更新されていないため、初めて動作しないと言いました。再:検索ソリューションは、すべての私のリンクをアクティブにしたので、この場合はいいですが、正しい答えとしてこれをマークします。 – IntricatePixels

関連する問題