简体   繁体   English

jQuery添加+从多个元素中删除类

[英]jQuery add + remove classes to/from multiple elements

I've been searching and can't quite figure out how to shorten this code I've made for this site's navigation. 我一直在寻找并且无法弄清楚如何缩短我为此网站导航所做的代码。 I'm afraid I'm new to Javascript and jQuery. 我担心我是Javascript和jQuery的新手。 Thanks in advance. 提前致谢。

The page never reloads, so I've done the following to display what page is currently being viewed: 页面永远不会重新加载,所以我已完成以下操作以显示当前正在查看的页面:

The menu: 菜单:

<ul>
  <li><a href="#" class="nav on" id="navitem1" onclick="showMiddle(1);">item 1</a></li>
  <li><a href="#" class="nav" id="navitem2" onclick="showMiddle(2);">item 2</a></li>
  <li><a href="#" class="nav" id="navitem3" onclick="showMiddle(3);">item 3</a></li>
  <li><a href="#" class="nav" id="navitem4" onclick="showMiddle(4);">item 4</a></li>
  <li><a href="#" class="nav" id="navitem5" onclick="showPhotos(5);">item 5</a></li>
</ul>

The rest: 其余的部分:

function changeClass1() 
{
    if ($(".nav").hasClass('on'))
    {
        $('.nav').removeClass('on');
        $("#navitem1").addClass('on');
    }
};
function changeClass2() 
{
    if ($(".nav").hasClass('on'))
    {
        $('.nav').removeClass('on');
        $("#navitem2").addClass('on');
    }
};
function changeClass3() 
{
    if ($(".nav").hasClass('on'))
    {
        $('.nav').removeClass('on');
        $("#navitem3").addClass('on');
    }
};
function changeClass4() 
{
    if ($(".nav").hasClass('on'))
    {
        $('.nav').removeClass('on');
        $("#navitem4").addClass('on');
    }
};
function changeClass5() 
{
    if ($(".nav").hasClass('on'))
    {
        $('.nav').removeClass('on');
        $("#navitem5").addClass('on');
    }
};
function changeClass6() 
{
    if ($(".nav").hasClass('on'))
    {
        $('.nav').removeClass('on');
        $("#navitem6").addClass('on');
    }
};

$("#navitem1").click(changeClass1);
$("#navitem2").click(changeClass2);
$("#navitem3").click(changeClass3);
$("#navitem4").click(changeClass4);
$("#navitem5").click(changeClass5);
$("#navitem6").click(changeClass6);
$(".nav").on("click", function () {
    $(".nav").removeClass("on");
    $(this).addClass("on");
});

That says: when any .nav is clicked, first remove all .on 's from all .nav 's, then add it back to the element that was clicked. 这就是说:当点击任何.nav时,首先从所有.nav删除所有.on ,然后将其添加回被点击的元素。

Note that you don't need to check if something has a class before removing it. 请注意,在删除之前,您无需检查某个类是否有类。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM