0

我想知道让菜单记住当前处于活动状态的最简单方法是什么。例如,如果我在菜单中按“服务”并加载服务页面,我希望突出显示菜单中的“服务”项。我应该使用jquery或php,如何?

谢谢你的任何建议。。

4

4 回答 4

1

这是一个纯粹基于 URL 的解决方案。如果您的页面与您的菜单项具有相同的名称,您可以简单地解析出 URL 以找到适当的项来应用类或样式。请不要,尽管此解决方案取决于您的页面与菜单项的名称相同这一事实。

例如:

// With a URL like:
// http://www.thisisanexample.com/modules/pro/blogs/blogs.php?action=my_page&mode=main

var url = window.location.href;
url = url.substr(url.lastIndexOf('/') + 1);
url = url.substr(0, url.indexOf('.'));

// Sample switch to add class to appropriate menu item
switch (url) {
    case " --> some page <-- ":
        // add menu item for this page
        break;
    case "blogs":
        $('#blog-menuItem').addClass('active');
        break;
    case " --> some other page <-- ":
        // add menu item for this page
        break;
}

// url would effectively contain "blogs" after the parsing.

此代码是轻量级的,可让您不必跟上任何服务器端变量或 cookie。

希望这可以帮助。

于 2013-07-02T16:03:04.730 回答
0

这在 PHP 中相当容易。您可以为简单页面编写一个快速函数...例如:

<?php
function page() { return basename($_SERVER['PHP_SELF'], ".php"); }
?>

<a href="foobar.php" class="<?php if(page() == "foobar") echo "active"; ?>">Foo</a>
<a href="bazbiz.php" class="<?php if(page() == "bazbiz") echo "active"; ?>">Baz</a>

话虽如此,这是一个粗略的例子。这实际上取决于您的应用程序、目标、框架等。在不知道发生了什么的情况下,任何事情都不会发生。

于 2013-07-02T15:34:18.593 回答
0

每次加载页面时,您都会从头开始创建菜单,这意味着您可以随意修改它。

一般来说,如果你加载一个不同的页面,你可以这样使用 PHP:

<a href="myLink.php" class="<?php if ($_SERVER["REQUEST_URI"] == "/mypage") echo "myClass"; ?>">Foo</a>

您还可以使用 CSS 来设置当前使用活动伪类访问的链接的样式。

a:active
{
    background-color:yellow;
} 

如果您需要在不更改当前页面的情况下让您的菜单看起来不同,那么您可以使用 Javascript。

这是一个将类添加到您使用 Jquery 单击的菜单的示例:

$("#menuId").click(function()
{
  $("#menuId").addClass("myClass");
}); 

有许多其他可能的方法可以做到这一点,您可以使用 cookie 甚至会话来做到这一点,但我认为在您的情况下 PHP 或 CSS 版本效果最好。

于 2013-07-02T15:41:11.147 回答
0

我会使用本地存储(适用于所有浏览器,即 8+)。

设置如下:

localStorage.activeItem = 'services';

得到这样的:

$('#output').html('active item: ' + localStorage.activeItem);

编辑:快速说明 - localStorage 保存在用户计算机上,因此即使用户离开您的站点并在几个月后再次返回,它也会保留。考虑到这一点,您可能希望在您的 activeItem 离开之前或在第一页加载之前清除它们。

于 2013-07-02T15:54:15.597 回答