2011-07-07 101 views
1

我用下面的代碼有一個菜單,設置活動類PHP包括菜單

<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

爲您包括文件的方式,你可以使用PHP從URL搶值,並將抓取的值插入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> 

伸長以顯示代碼更好,但在必要時使用在線的$_GET與PHP輸出類。

您的其他選擇是使用JavaScript並查看location變量並基於鏈接應用類,但服務器端解決方案可能是最好的。

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

爲什麼你用這種方式? '($ _GET [..])? 'foor':'bar';'好吧,但是對於整個句子,好處在哪裏? – Rufinus

+0

@Rufinus:我不確定我是否理解這個問題。我使用[內聯三元運算符](http://php.net/manual/en/language.operators.comparison.php#example-111)只是爲了使輸出更容易,然後'如果{echo} else {echo }' - 編輯我認爲只有一個輸出,我可以免除它,並使用一個IF ... –

+0

我知道在線三元運算符。但我從來沒有見過這種封蓋。我只是使用'echo('whatever'== $ 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.... 
} 

和HTML

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

這是一個非常簡單的解決方案:

+1

如果你可以在這個答案中包含你的解決方案的解釋會更好。然後,您可以在答案中保留與您網站的鏈接,以便讓人們瞭解更多信息。但是這裏給出的答案應該足以解決而不需要使用鏈接(萬一鏈接斷開)。 – saluce