在.php页面上使用jquery设置活动链接 - 不起作用

时间:2015-07-20 23:59:53

标签: php jquery css menu

我尝试过很多建议的jquery代码,最后找到一个几乎可以工作的代码。

但它有一个缺陷 - 点击一个链接后 - 链接会突然显示一秒钟(只要页面加载),然后转为活动状态。在页面加载php / html之前点击之后是否可以立即突出显示链接?

由于动画的可能性,找到jquery或javascript解决方案会很棒吗?   使网站/主页菜单动态的常用方法是什么?

提前致谢!所有的解释或代码示例都非常棒!

HTML:

<DOCTYPE! html>
<html>
<head>
    <title>TESTLEHT</title>
    <link rel="stylesheet" href="style.css" type="text/css" >
    <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>

</head>
<body>

<div class="naviwrap"><?php include("includes/menu.php"); ?></div>
<div class="clear"></div>
<div class="content"></div>
<div class"footer"><?php include("includes/footer.php"); ?></div>

<script src="scripts.js" type="text/javascript"></script> 

</body>
</html>

包含菜单文件:

<nav class="menu">
           <ul class="clearfix">
              <li id="linkone" class="jlist" data-linkid="link1"><a href="index.php">Avaleht</a></li>
              <li id="linktwo" class="jlist" class="current-item" data-linkid="link2"><a href="meist.php">Meist</a></li>
              <li id="linkthree" class="jlist" data-linkid="ink3"><a href="tooted.php">Tooted</a></li>
              <li id="linkfour" class="jlist" data-linkid="link4"><a href="galerii.php">Galerii</a></li>
              <li id="linkfive" class="jlist" data-linkid="link5"><a href="kontakt.php">Kontakt</a></li>

           </ul>
    </nav>

的CSS:     .menu a {       过渡:所有线性0.30s;       颜色:#ABABAB;       font-size:16px;       text-decoration:none;     }

.menu li:hover > a, .menu .current-item > a {
  text-decoration: none;
  color: red;
}

.menu li:active > a, .menu .current-item > a {
    color: red;
}

.menu > ul > li {
  float: left;
  display: inline-block;
  position: relative;
  font-size: 105%;
}

.menu > ul > li > a {
  padding: 15px 45px;
  margin-top: 15px;
}

.menu > ul > li:hover > a, .menu > ul > .current-item > a {
  color: #282828;
}

当前的jquery代码,几乎可以工作:

$(function () {

    var str = location.href.toLowerCase();

    $('nav ul li a').each(function () {

        if (str.indexOf(this.href.toLowerCase()) > -1) {
            $('a.current-item').removeClass('current-item');
            $(this).parent().addClass('current-item');
        }
    });
});

1 个答案:

答案 0 :(得分:0)

这似乎是网页的正常行为。当页面加载时,人们知道事情变得有点时髦。

如果您想了解页面转换的方式,您需要研究单页面应用程序(SPA),这通常意味着当您单击链接时只加载部分页面 - 这是使用Ajax完成的。它可以像自定义jQuery脚本一样简单,也可以使用像Angular或Backbone这样的大型框架,或者像Sammy JS这样的小型框架。

还有预制的jQuery脚本,如jQuery SmoothState,您无需担心制作部分页面。 SmoothState会在秘密加载和检查下一页时延迟下一页的加载,并且只更改页面的不同区域。它支持动画页面过渡,以及预加载“下一页”(比链接上的mouseup事件更早),使事情看起来更快。

https://en.wikipedia.org/wiki/Single-page_application

https://angularjs.org/

http://backbonejs.org/

http://sammyjs.org/

http://miguel-perez.com/articles/add-page-transitions-with-smoothstate/