2012-02-18 9 views
1

私はPHPを使用してナビゲーションオプションのリストをエコーし​​ています。これは各ユーザの特権によって異なります。リストはいくつかのグループに分かれています。グループの見出しをクリックすると、サブメニューが表示されます。ここでJavaScriptを使用したナビゲーションのアクティブなクラスを設定する

echo "<ul id='menu'>"; 
echo "<li><a href='#'>Adminstration</a> 
<ul><li>"; 
echo "<a href='path_to_page/usermanagement.php'>User Management</a>"; 
echo "</li><li>"; 
// and some more items 

function initMenu() { 
    $('#menu ul').hide(); 
    $('#menu li a').click(function() { 
     var checkElement = $(this).next(); 
     if((checkElement.is('ul')) && (checkElement.is(':visible'))) { 
     //slide up if visible (works fine). 
     } 
     if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
     //otherwise slideDown (works fine too). 
     } 
    }); 
} 

$(document).ready(function() {markActiveLink();initMenu();}); 

function markActiveLink() { 
    $("#menu li ul li a").filter(function() { 
     return $(this).prop("href").toUpperCase() == window.location.href.toUpperCase(); 
    }).addClass("active") 
    .closest('ul') //some markup problem 
    .slideDown('normal'); 
} 

そして、これが表示されているリストのための私のマークアップです:私は現在、javascriptのこの部分を使用して開いているメニューのアクティブなクラスを設定することができました管理は私のグループ見出しであり、ユーザー管理は私のサブグループです。 上記のコードを使用しても、私はまだ別のページにメニューを展開できないので、ユーザーは自分がどのページにいるか知っていますか?私はいくつかの奇妙な理由のために、それは最初の変数を宣言するために私を必要とし、問題を考え出し

+0

気にしないが、私はこの問題を考え出しました! – Namit

+2

次に、回答を(回答として)投稿するか、質問を削除します。 –

+1

私は自分の質問に答えるのに十分なポイントがないので、他の人もそれを見ることができるように回答を投稿しますが、私は次の6時間はそれをすることができません! – Namit

答えて

1

var checkEle = $("#menu li ul li a").filter(function() { 
     return $(this).prop("href").toUpperCase() == window.location.href.toUpperCase(); 
    }).addClass("active") 
    .closest('ul'); //get the closest ul 
    console.log(checkEle); 
    checkEle.slideDown('normal'); 
関連する問題