高亮显示所选菜单项


Highlighting selected menu item

名为index.php的页面包含1个菜单和3个选项。菜单链接指向URL:index.php?id_product=xy。然后PHP使用GET读取id_product并从数据库中打印详细信息。现在我想突出显示(更改文本的颜色)最后点击的菜单项。如何做到这一点?是否可以使用jQuery读取id_product表单URL的值,然后为单击的菜单项添加文本效果?有什么想法吗?

<ul>
  <li><a href='index.php?id_product=1'>1</a></li>
  <li><a href='index.php?id_product=2'>2</a></li>
  <li><a href='index.php?id_product=3'>3</a></li>
</ul>

首先,为元素添加一些id标记:

<ul>
  <li><a id="1" href='index.php?id_product=1'>1</a></li>
  <li><a id="2" href='index.php?id_product=2'>2</a></li>
  <li><a id="3" href='index.php?id_product=3'>3</a></li>
</ul>

然后使用javascript/jquery和少量php:将类"highlight"添加到适当的$_GET变量中

<script>
jQuery(document).ready(function($) {
    var selected_product = "<?php echo $_GET['id_product']; ?>";
    if(selected_product !== "")
     $("#"+selected_product).addClass("highlight");
});
</script>

最后用css创建高亮类:

<style>
    a.highlight { color: red; }
</style>
<?php 
$menu_items = array(1, 2, 3); 
$product_id = $_GET['id_product'];
echo "<ul>";
foreach($menu_items as $menu_item){
    echo "<li><a href='index.php?id_product=" . $menu_item . "'" . (isset($product_id) && $product_id == $menu_item ? " class='active'" : "") . ">" . $menu_item . "</a></li>";
}
echo "</ul>";
?>

这将在基于id_product 的菜单项中添加一个活动类

这应该是工作。

$(function()){
    var file_url = window.location.pathname.substring(window.location.pathname.lastIndexOf('/')+1)
    $("ul > li > a[href="+file_url+"]").addClass("selected");
}

另一种方式应该是

$(function(){
    $("ul > li > a[href$='"+window.location.search+"']").addClass("selected");
})

无论如何,只有使用php才更容易:)

foreach ($products as $p) {
  $selected = ($_GET["id_product"]==$p->id)?" class='selected'":"";
  echo "<a href='?id_product=".$p->id."'".$selected.">".$p->id."</a>";
}

<style>
    a[href*='id_product=<?=$_GET["id_product"]?>']{ color:red; }
</style>