【问题标题】:How to link get focus after page refresh页面刷新后如何链接获得焦点
【发布时间】:2013-07-23 02:08:38
【问题描述】:

我的问题是:当我点击一个按钮然后刷新页面时,我希望我的菜单清除以前访问过的链接(再次将它们恢复正常),但将当前访问过的链接保持为 a:visited in css。

我认为这很简单,但我刚开始学习网络编程,所以我需要帮助。我找到了一种方法来做到这一点。但问题是它不起作用!这是我的代码:

< ul id="menuTop">
  < li id="menu-link-1">
@Html.ActionLink("Home", "Index", null, null, new { id = "link-1-visited" }) < /li>
< li id="menu-link-2">
@Html.ActionLink("Produtos", "Products", null, null, new { id = "link-2-visited" })  < /li>
< li id="menu-link-3">
@Html.ActionLink("Fale Conosco", "ContactUs", null, null, new { id = "link-3-visited" })  < /li>
< li id="menu-link-4">
@Html.ActionLink("Quem Somos", "AboutUs", null, null, new { id = "link-4-visited" })  < /li>
< /ul>

这是我的按钮,使它们“被访问”的代码是:

$(document).ready(function() {
$('#link-1-visited').click(function() {
    $("#menu-link-1").removeAttr("menu-link-1");
    $(this).addClass('link-1-visited');
    window.alert("test 1 !!");
});

$('#link-2-visited').click(function() {
    $(this).addClass('link-1-visited');
    window.alert("test 2 !!");
});

$('#link-3-visited').click(function() {
    $(this).addClass('link-1-visited');
    window.alert("test 3 !!");
});

$('#link-4-visited').click(function() {
    $(this).addClass('link-1-visited');
    window.alert("test 4 !!");
});
});

我在css中的代码是:

ul#menuTop li#menu-link-1 a {
    background-image: url("../Content/images/Menu/menu-image-1-alt.png");
    margin-right: 1px;
}

ul#menuTop li#menu-link-1 a:hover {
    background-image: url("../Content/images/Menu/menu-image-1-hover.png");
    margin-right: 1px;
}

.link-1-visited {
    padding: 40px 20px 20px;
    border-width: 3px;
    border-bottom: 0px;
    // more styles below...
}

ul#menuTop li a {
    border: 3px #98fb98 solid;
    border-bottom: 0px;
    //more styles below...
}

ul#menuTop li a:hover {
    padding: 40px 20px 20px;
    border-width: 3px;
    border-bottom: 0px;
    border-style: solid;
    //more styles below...
}

问题是我在 menu-link-1 中的代码不起作用。我想删除 ul 和 li css 并向其添加类“link-1-visited”。

您对我该怎么做有什么想法吗?

【问题讨论】:

  • 单独使用 css 是无法做到这一点的。因为浏览器决定访问哪些链接,哪些不访问。
  • 您可以为每个链接设置类似的样式。记录在本地存储中访问了哪些链接并存储浏览量计数。对于第一次点击的每个链接,将其设置为零。增加所有现有链接。上面的 1 被删除。本地存储中的样式可以不同
  • 就像我说的,我是这个网络开发的新手。你能给我看一些教程吗?
  • 我不确定是否有人真的这样做了。它没有多少价值。我只是随机想出解决方案。实施需要很多时间
  • 顺便说一句,你为什么需要这个?你有一个具体的案例为什么你需要这个。可能还有其他方法可以做到这一点

标签: javascript jquery asp.net-mvc-3 css


【解决方案1】:

基本上,您需要将链接设置为在 CSS 中保持一种颜色,所以...

a, a:visited { 
    color: blue;
}

然后你只需在点击事件上用 jQuery 改变颜色:

$("a").click(function() {
    ($this).css({"color":"white"});
});

只需更改值以适合您使用的内容,您就应该准备就绪。

对于您尝试做的事情,请在此处查看会话变量:Java session variables

【讨论】:

  • 这个方法的问题是页面刷新时,按钮又恢复正常了。我希望它在我刷新页面时获得焦点并保持它。
  • 对不起,我误解了你写的内容。您将无法使用 jQuery 执行此操作,因为您设置的所有变量都会在您刷新页面时清除。如果您有应用程序后端,您可以查看服务器端变量,这些变量在您重新启动服务或服务器之前不会被清除。我已经用链接更新了我上面的答案。
【解决方案2】:

/* change the id name according to the page link you want to make focused */
var page = document.getElementById("index").href;
if (page == index) {
  document.getElementById("index").className = "active";
}
ul {
  list-style-type: none;
}

li a {
  display: block;
  cursor: pointer;
  text-decoration: none;
  padding: 10px 20px;
  font-size: 13.8px;
  font-family: Verdana, Geneva, Tahoma, sans-serif;
  text-transform: uppercase;
  color: #555555;
  font-style: normal;
  white-space: nowrap;
  border-radius: 10px;
  transition: background-color .4s;
}

.active {
  background-color: rgba(0, 0, 0, 0.9);
  border-radius: 10px;
  color: rgb(255, 204, 65);
}
<ul>
  <li><a id="index" href="index.html">Overview</a></li>
  <li><a id="wed" href="wed.html">Wedding</a></li>
  <li><a id="engage" href="engage.html">Engagement</a></li>
</ul>

【讨论】:

  • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
猜你喜欢
  • 2012-07-04
  • 2018-12-30
  • 1970-01-01
  • 2020-12-31
  • 2019-11-11
  • 2018-08-11
  • 2013-06-12
  • 1970-01-01
  • 2017-05-19
相关资源
最近更新 更多