[英]Link which is being clicked upon must stay active
我需要使点击的链接处于活动状态。 我在下面有以下代码,我尝试了不同的脚本代码来激活链接,但它似乎不起作用。 似乎是什么问题?
$("a").click(function () { if ($(this).hasClass("active")) { $(this).removeClass("active"); } else { $(this).addClass("active"); } });
nav ul li a:hover, nav ul li a.active { color: #23dbdb; }
<nav> <ul> <li><a class="active" href="Login.html" target="dest">Home</a></li> <li><a href="buttonsstudent.html" target="dest">Result</a></li> <li><a href="card4.html" target="dest">Subjects</a></li> <li><a href="aboutpage.html" target="dest">About</a></li> </ul> </nav>
a
标签具有重定向而不是停留在同一页面上的默认属性。 因此,当我们单击a
,该功能甚至会在我们的代码之前执行,因此我们的更改不会按预期工作。 这是您的代码中唯一缺少的部分,否则您的代码会按预期工作。 但是,一次将有不止一个活动课程。 所以我做了一些改变如下:
active
类active
类。通过这种方式,您的代码将像正常网站一样工作。
$('a').click(function(event){ event.preventDefault(); $('.red-links li a').removeClass('active') $(this).addClass('active'); })
nav ul li a:hover, nav ul li a.active{ color: #23dbdb; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <nav> <ul class='red-links'> <li><a class="active" href="Login.html" target="dest">Home</a></li> <li><a href="buttonsstudent.html" target="dest">Result</a></li> <li><a href="card4.html" target="dest">Subjects</a></li> <li><a href="aboutpage.html" target="dest">About</a></li> </ul> </nav>
将前级得到li a.active
和removeClass
从它。 您也可以在删除类之前进行验证以检查是否存在元素li a.active
$('a').click(function() { $('li a.active').removeClass('active') $(this).addClass('active') })
nav ul li a:hover, nav ul li a.active { color: #23dbdb; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <nav> <ul> <li><a class="active" href="Login.html" target="dest">Home</a></li> <li><a href="buttonsstudent.html" target="dest">Result</a></li> <li><a href="card4.html" target="dest">Subjects</a></li> <li><a href="aboutpage.html" target="dest">About</a></li> </ul> </nav>
我提出了一个使用一行代码 jquery 的解决方案,其中active
类从所有a
删除,不包括当前a
,其中添加了active
类。
方法not()
将排除当前a
。
$("a").click(function () { $("a.active").removeClass("active").not($(this).addClass("active")); });
nav ul li a:hover, nav ul li a.active { color: #23dbdb; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <nav> <ul> <li><a class="active" href="Login.html" target="dest">Home</a></li> <li><a href="buttonsstudent.html" target="dest">Result</a></li> <li><a href="card4.html" target="dest">Subjects</a></li> <li><a href="aboutpage.html" target="dest">About</a></li> </ul> </nav>
您可能只需要:focus
使用此功能。 不需要 JavaScript / jQuery。
nav ul li a:hover, nav ul li a:active, /* :active pseudo class instead of custom class 'active', just in case */ nav ul li a:focus { color: #23dbdb; }
<nav> <ul> <li><a class="active" href="Login.html" target="dest">Home</a></li> <li><a href="buttonsstudent.html" target="dest">Result</a></li> <li><a href="card4.html" target="dest">Subjects</a></li> <li><a href="aboutpage.html" target="dest">About</a></li> </ul> </nav>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.