因此,我希望能够在您转到单击页面后为链接设置不同的样式。我一直在使用以下代码:
$(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
类
答案 0 :(得分:2)
如果我正确理解了您的问题,则您的功能不适用于random
链接,因为它有href
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检测该变量是否存在于网址中,然后激活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完全使用javascript(我知道通过页面请求保持变量的唯一方法)。
点击random
按钮后,您首先要使用javascript将random
Cookie设置为true,然后再让实际链接执行此操作。在进入页面时,您可以执行与我之前的选项类似的检查,但是您可以检查cookie是否为tre,而不是网址。如果是,则将其更改为false(因此在下一页请求时,随机按钮将不再处于活动状态)并将random
按钮设置为活动状态。
我相信第一个解决方案是首选(Cookie应该仅作为最后的手段使用,它们会在每个页面请求时发送,这意味着额外的数据,并且您的用户可能禁用了Cookie,或者可能存在法律反对使用cookie,所以函数不能总是工作),我不会写javascript了。请随意询问您是否更喜欢此解决方案,但需要进一步的帮助。