2011-07-07 12 views
1

は、私は次のコードを使用して、メニューを持っているメニュー

<ol id="feature_list"> 
    <li><a href="index.php?action=profile" class="feature_current">Profile</a></li> 
    <li><a ....></li> 
</ol> 

クリックすると、同じページがロードされ、私は必要なPHP ファイルを含めるために、次のコードを使用しています。

if (($_GET['action']) == 'profile') { 
    include('profile.php');  } 
} 

今、私はリンクに基づいて動的にメニューにアクティブクラスのfeature_current 'を設定したいが、私はそれを行うことができますどのように、クリックされましたか?

答えて

1

同じ方法あなたはURLからつかむためにPHPを使用することができますjQueryコードのようにグラブされた値を挿入する:

$('.#').addClass('active'); 

"#"はURLから取得した値です。たとえば :

<?php 

echo '<script type="text/javascript"> 
$(document).ready(function(){'; 
if(intval($_GET['PageID']) > 0) { 
    $from_url = intval($_GET['PageID']); 
    } else { 
     if(isset($_GET['action'])) { 
     $from_url = $_GET['action']; 
     } else { 
     $from_url = 'index'; 
     } 
    } 
echo ' 
    $(\'' . $from_url . '\').addClass(\'active\'); 
    }); 
</script>'; 

?> 

はまたhereを説明しました。

1
<li> 
    <a href="index.php?action=profile" class="feature_current 
    <?php if ($_GET['action'] == 'profile') { echo ' active"'; } ?> 
    "> 
    Profile 
    </a> 
</li> 

細長いが、より良いコードを示すが、必要に応じて、出力するPHPでクラスをインライン$_GETを使用します。

もう1つの選択肢は、javacriptを使用してlocation変数を見て、そのリンクに基づいてクラスを適用することですが、サーバー側の解決策がおそらく最も適しています。

<li><a href="...?action=profile" 
<?php if(isset($_GET['action']) && $_GET['action']=='profile'){ 
echo 'class="feature_current"'; } ?> 
>...</a> 
+0

なぜこのようにuse()するのですか? '($ _GET [..])? 'foor': 'bar'; 'okだが文全体に対して、どこに利益があるのだろうか? – Rufinus

+0

@Rufinus:私はその質問を理解しているかどうか分からない。私は[インライン三項演算子](http://php.net/manual/en/language.operators.comparison.php#example-111)を使って出力を簡単にします。 'if {echo} else {echo } ' - EDIT私はそこに1つの出力があると仮定し、私はそれを免除し、単一のIFを使用することができます... –

+0

私はインライン三項演算子を知っています。しかし、私はこのcapsulingを見たことがない。私はちょうど 'エコー( '何でも' == $ foo)を使用しますか? 'true': 'false'; 'echo( 'whatever' == $ foo? 'true': 'false');'違いがあるのだろうか。 – Rufinus

0
$actionClass = isset($_GET['action']) ? $_GET['action'] : ''; 

switch($actionClass){ 

default: 
$actionClass = 'featured_content'; 
break; 

case 'profile': 
$actionClass = 'profile-class-name'; 
break; 
    etc.... 
} 

とこれは非常にシンプルなソリューションです

<ol id="feature_list"> 
     <li><a href="index.php?action=profile" class="<?php echo $actionClass;?>">Profile</a></li> 
     <li><a ....></li> 
    </ol> 
0

HTML::ファイルを含めるよう

+1

この答えにあなたの解答の説明を含めることができればよいでしょう。次に、人々がより多くの情報を見つけることを可能にする方法として、あなたの答えにあなたのウェブサイトへのリンクを保持することができます。しかし、ここで与えられた答えは、リンクの使用を必要とせずに(リンクがダウンした場合)解決するのに十分なはずです。 – saluce

関連する問題