2015-07-20 42 views
1

我尝试了很多建议的jquery代码,最终找到了一个几乎可以工作的代码。在.php页面上设置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: 。菜单一{ 过渡:所有线性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'); 
     } 
    }); 
}); 
+0

尝试把内'$(文件)。就绪()jQuery代码;' – Jessica

回答

0

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

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

还有像jQuery SmoothState这样的预制jQuery脚本,您不必担心制作部分页面。 SmoothState会在下一页加载时会延迟加载并检查下一页,并且只更改不同页面的区域。它支持动画页面转换,以及预加载“下一页”页面(比链接上的鼠标事件更快),使事情看起来更快一点。

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/