Jquery 在导航栏上突出显示默认页面当前菜单

Jquery 在导航栏上突出显示默认页面当前菜单,jquery,css,menu,navbar,Jquery,Css,Menu,Navbar,我没有成功突出显示我的默认网页,例如:www.mydomain.com。 当它被重定向到index.php和其他菜单链接时,它就可以了,当它是纯域,没有其他文件时,我就不能了。 我编写以下Jquery只是为了放大链接的字体大小并将其变成白色: $(function () { var path = window.location.href; path = decodeURIComponent(path); path =path

我没有成功突出显示我的默认网页,例如:www.mydomain.com。 当它被重定向到index.php和其他菜单链接时,它就可以了,当它是纯域,没有其他文件时,我就不能了。 我编写以下Jquery只是为了放大链接的字体大小并将其变成白色:

$(function () {
            var path = window.location.href;
            path = decodeURIComponent(path);
            path =path.substr(path.lastIndexOf("/") +1);

            $('#menu a').each(function () { 
                var href = $(this).attr('href');
                href=href.substr(href.lastIndexOf("/") +1);
                if (href.indexOf(path) != -1 && path != "") {
                    $(this).closest('li').find('a').css({'color': 'white' , 'font-size' : '18px' });
                        }
               }); //end of each function
            });
HTML标记是:

  <div id="menu">
            <ul>
            <li><a href="$doc_root/index.php" title="Home Page">Home</a></li>
            <li><a href="$doc_root/travel/grid.php" title="My Trips">travelling</a></li>
            <li><a href="#">images</a></li>
            <li><a href="#">words</a></li>
            <li><a href="#">about</a></li>
            </ul>
    </div>  

如果只写了域名(www.mydomain.com),如何将我的第一个链接菜单“Home”更改为新的字体和颜色? 我希望在选择index.php时将其高亮显示。 太多了。 M
另外,不管域名直接重定向到index.php(我通常知道怎么做,我不知道如何使用Aruba),我都在寻找一个很好的“编程”解决方案。

我想你应该能够将

主页
链接更改为
/
,就像
index.php
通常是那样默认文档索引名,可以省略

另外,考虑到您的示例,我认为使用
window.location.pathname
比使用
window.location.href
更方便

#menu a.curpage {
    color: white;
    font-size: 18px;
}

$('#menu a').each(function() {
    if (this.href == window.location.pathname) {
        $(this).addClass('curpage');
    }
});

如果在给定的示例中,菜单只有五项那么短,您可以完全避免使用JS,请参见本主题中的答案:

我想您应该能够将
主页
链接更改为
/
,因为
索引。php
通常是默认的文档索引名称,可以省略

另外,考虑到您的示例,我认为使用
window.location.pathname
比使用
window.location.href
更方便

#menu a.curpage {
    color: white;
    font-size: 18px;
}

$('#menu a').each(function() {
    if (this.href == window.location.pathname) {
        $(this).addClass('curpage');
    }
});

在给定的示例中,如果菜单短至五项,您可以完全避免使用JS,请参阅本主题中的答案:

在每个页面上,使用该页面名称在PHP中设置一个变量,因此对于index.PHP,使用值“home”设置一个变量。对每个菜单项执行此操作。然后在每个页面上加载检查此变量名,并向相关菜单项添加一个类。大概是这样的:

 <?php
$menuItems = array(
    'Home' => array('text' => 'Home', 'url' => '/'),
    'Page1' => array('text' => 'Page 1','url' => '/page-1'),
    'Page2' => array('text' => 'Page 2', 'url' => '/page-2'),
    'Page3' => array('text' => 'Page 3', 'url' => '/page-3'),
    'Page4' => array('text' => 'Page 4', 'url' => '/page-4'),
);
?>
<div id="nav">
    <ul>
    <?php
    $miCounter = 1;
    foreach($menuItems as $key => $value):
        $currentLink = '';
            if($pageName === $key):
                $currentLink = 'class="selected"';
            endif;
        ?>
        <li>
            <a <?php echo $currentLink; ?> href="<?php echo $value['url']; ?>">
                <?php echo $value['text']; ?>
            </a>
        </li>
        <?php
    endforeach;
    ?>
    </ul>
</div>


因此,当当前页面为“主页”(
$pageName
)时,它将向菜单链接添加
class=“selected”
。然后在css中为所选的
类创建所需的任何背景或颜色样式。

在每个页面上,用该页面名称在PHP中设置一个变量,因此对于index.PHP,用值“home”设置一个变量。对每个菜单项执行此操作。然后在每个页面上加载检查此变量名,并向相关菜单项添加一个类。大概是这样的:

 <?php
$menuItems = array(
    'Home' => array('text' => 'Home', 'url' => '/'),
    'Page1' => array('text' => 'Page 1','url' => '/page-1'),
    'Page2' => array('text' => 'Page 2', 'url' => '/page-2'),
    'Page3' => array('text' => 'Page 3', 'url' => '/page-3'),
    'Page4' => array('text' => 'Page 4', 'url' => '/page-4'),
);
?>
<div id="nav">
    <ul>
    <?php
    $miCounter = 1;
    foreach($menuItems as $key => $value):
        $currentLink = '';
            if($pageName === $key):
                $currentLink = 'class="selected"';
            endif;
        ?>
        <li>
            <a <?php echo $currentLink; ?> href="<?php echo $value['url']; ?>">
                <?php echo $value['text']; ?>
            </a>
        </li>
        <?php
    endforeach;
    ?>
    </ul>
</div>


因此,当当前页面为“主页”(
$pageName
)时,它将向菜单链接添加
class=“selected”
。然后在css中,为所选的
类创建所需的任何背景或颜色样式。

很抱歉打断了一个旧主题,但我刚刚遇到了同样的问题,我找到了解决方案

$(document).ready(function() {
    $("#menu [href]").each(function() {
        if (this.href == window.location.href) {
            $(this).addClass("active"); <-- INSERT NAME OF YOUR CLASS
        }
        if(window.location.href == "http://YOUR-DOMAIN.??/") {
            $(window.location.href = "http://YOUR-DOMAIN.??/index.php");
            $(this).addClass("active"); <-- INSERT NAME OF YOUR CLASS
        }
    });
});
$(文档).ready(函数(){
$(“#菜单[href]”)。每个(函数(){
if(this.href==window.location.href){

$(this.addClass(“active”);很抱歉,我打断了一个旧主题,但我刚刚遇到了同样的问题,我找到了一个解决方案

$(document).ready(function() {
    $("#menu [href]").each(function() {
        if (this.href == window.location.href) {
            $(this).addClass("active"); <-- INSERT NAME OF YOUR CLASS
        }
        if(window.location.href == "http://YOUR-DOMAIN.??/") {
            $(window.location.href = "http://YOUR-DOMAIN.??/index.php");
            $(this).addClass("active"); <-- INSERT NAME OF YOUR CLASS
        }
    });
});
$(文档).ready(函数(){
$(“#菜单[href]”)。每个(函数(){
if(this.href==window.location.href){

$(this).addClass(“active”);好的,可以替代以前较长的JS,但我无法解决我的域问题。当它是www.example.com时,我无法使它具有与www.example.com/index.php相同的样式:-(好的,很好地替代了以前较长的JS,但我仍然无法解决我的域问题。当它是www.example.com时,我无法使它具有与www.example.com/index.php相同的样式):-(好的,Adrian,尽管我相信你对$value['class'的理解是错误的),或者至少我认为是这样,我的问题没有解决。Thks Adrian,你知道用一些php代码从域重定向到域/index.php的方法吗?我的意思是,我不能编辑Apache服务器文件,因为我的站点托管在某个服务提供商上,不允许我编辑这些配置。Thks M.P.S。我相信你对$value['class'的理解是错误的您的意思是当您访问www.domain.com(示例)时它不会自动调用www.domain.com/index.phpexactly。如果我输入www.domain.com,它会显示与index.php相同的内容,但URL不会重定向到index.php。它正在调用index.php,如果您没有显式地将URL设置为
index.php
,这是服务器的默认调用。我不明白您为什么需要这样做。如果你真的需要,你真正能做的就是把所有的内部链接
hrefs
设置为
“/index.php”
,而不是
“/”
,但这没有什么区别。
index.php
被调用了。哦,你对
$value['class']的看法是正确的
。我使用了一些已经编写好的代码,在清理时,我忘了删除这些代码。好的地方!好的,Adrian,尽管我相信你对$value['class'的理解是错误的,或者至少我认为是这样,我的问题没有解决。Thks Adrian,你知道用一些php代码从域重定向到域/index.php的方法吗?我的意思是,我不能编辑Apache服务器文件,因为我的站点托管在某个服务提供商上,不允许我编辑这些配置。Thks M.P.S。我相信你对$value['class'的理解是错误的您的意思是当您访问www.domain.com(示例)时它不会自动调用www.domain.com/index.phpexactly。如果我输入www.domain.com,它会显示与index.php相同的内容,但URL不会重定向到index.php。它正在调用index.php,如果您没有显式地将URL设置为
index.php