0

因此,我希望在您转到被点击的页面后,能够为链接设置不同的样式。我一直在使用以下代码:

$(document).ready(function(){
var url = document.URL;
function contains(search, find) {
    return search.indexOf(find) !== -1;
};
$('#topbar a').each(function(){
    var link = $(this).attr('href');
    var answer = contains(link,url);
    if(answer === true){
        $(this).addClass('check');
    }
    else{
        $(this).addClass('nocheck');
    };
});
});

这会遍历我导航栏中的链接并检查它是否与链接在同一页面上,并且它有效,但我不能在一种特定情况下使用它:随机。

我有一个从我拥有的页面生成随机页面的链接,因此它没有指定的链接,因为它链接到随机生成页面的函数(注意:我无法更改函数或从中访问信息)。

那么我怎样才能检测到之前点击了随机链接,以便我可以给它.check上课

4

1 回答 1

2

如果我正确理解您的问题,则您的功能不适用于random链接,因为它有一个hreflike http://mysite.com/random,但服务器实际上会将您重定向到不同的页面,例如http://mysite.com/about-me,因此活动页面的 url 与 href 不匹配随机按钮,它不会获得活动状态。

有人可能会争论您是否希望它获得活动状态,因为再次单击它不会(可能)将您带到同一页面,但这不是问题所在。

我可以找到解决此问题的方法。

服务器端:
而不是重定向到 ie。http://mysite.com/about-me在随机函数中,您还可以重定向到http://mysite.com/about-me?random. 通过添加此 get 变量,您不应更改链接的行为(除非您有一些非常严格的控制器,或者实际使用了该变量,但这不太可能)。然后,您可以使用 javascript 检测该变量是否存在于 url 中,然后激活random按钮。

像这样的东西:

$(document).ready(function(){
  var url = document.URL;
  // check for random
  if (url.indexOf('?random') >= 0) {
     $('#topbar a.random').addClass('check');
  }
  // check all other
  $('#topbar a:not(.random)').each(function(){
      if($(this).attr('href').indexOf(url) >= 0){
         $(this).addClass('check');
      }
      else{
         $(this).addClass('nocheck');
      };
  });
});

cookie:
如果您没有访问服务器端随机控制器的权限,您可以使用 cookie 完全使用 javascript 来完成(我知道使变量通过页面请求持续存在的唯一方法)。

单击random按钮时,您首先random使用 javascript 将 cookie 设置为 true,然后再让实际链接执行此操作。进入页面后,您可以像我之前的选项一样进行类似的检查,但您可以检查 cookie 是否为 tre 而不是 url。如果是这样,请将其更改为 false(因此在下一页请求随机按钮将不再处于活动状态)并将random按钮设置为活动状态。

因为我认为第一个解决方案是首选(cookie 只能作为最后的手段使用,它们会在每个页面请求上发送,这意味着额外的数据,并且您的用户可能禁用了 cookie,或者可能有禁止使用 cookie 的法律,因此该功能无法始终工作),我不会编写javascript。随意询问您是否更喜欢此解决方案并且需要进一步的帮助。

于 2013-06-13T19:59:42.393 回答