为什么 removeClass 不起作用?

Why is removeClass not working?

我猜这很简单,但它一直让我发疯!下面是我的 jquery 代码 这是我的 Fiddle

$("#Headerhome").addClass('menuSelected').siblings().removeClass('menuSelected');
            $('#Headerhome').children('#Site-icon-1').addClass('SiteIconHover').siblings().removeClass('SiteIconHover');

           $("#HeaderSites").on('click', function () {

            $(this).addClass('menuSelected').siblings().removeClass('menuSelected');
            $(this).children('#Site-icon-2').addClass('SiteIconHover2').siblings().removeClass('SiteIconHover2');

        });


$("#HeaderApps").on('click', function () {

            $(this).addClass('menuSelected').siblings().removeClass('menuSelected');
            $(this).children('#Site-icon-3').addClass('SiteIconHover3').siblings().removeClass('SiteIconHover3');

        });

尝试一些这个选项 mate ,所有这些选项都以某种方式或其他方式工作,也许它们适合您正在寻找的内容

$("#item").removeClass();
$("#item").removeAttr('class');
$("#item").attr('class', '');

问题是您正在尝试寻找没有兄弟姐妹的 div 的兄弟姐妹。我已经改变了一些 CSS 和 JS。这应该可以满足您的要求。

JS:

 $("#Headerhome").addClass('menuSelected').siblings().removeClass('menuSelected');
 $('#Headerhome').children('#Site-icon-1').addClass('SiteIconHover');

 $("#Headerhome").on('click', function () {

     $(this).addClass('menuSelected').siblings().removeClass('menuSelected');
     $('div').removeClass('SiteIconHover');
     $(this).children('#Site-icon-1').addClass('SiteIconHover');
 });

 $("#HeaderSites").on('click', function () {

     $(this).addClass('menuSelected').siblings().removeClass('menuSelected');
     $('div').removeClass('SiteIconHover');
     $(this).children('#Site-icon-2').addClass('SiteIconHover');
 });


 $("#HeaderApps").on('click', function () {

     $(this).addClass('menuSelected').siblings().removeClass('menuSelected');
     $('div').removeClass('SiteIconHover');
     $(this).children('#Site-icon-3').addClass('SiteIconHover');
 });

CSS:已更新

#Site-icon-1 {

    background-color:#000;
    width:25px;
    height:25px;
    float:left;
    margin-right:15px;
    margin-top:12px;
    margin-left:5px;
}

#Site-icon-1.SiteIconHover {
    background-color:#00a9ff;
    width: 25px;
    height: 25px;
    float: left;
    margin-right: 15px;
    margin-top: 12px;
    margin-left: 5px;}


#Site-icon-2 {
    background-color:#000;
    width: 25px;
    height: 25px;
    float: left;
    margin-right: 15px;
    margin-top: 12px;
    margin-left: 5px;
}

#Site-icon-2.SiteIconHover {
    background-color:green;
    width: 25px;
    height: 25px;
    float: left;
    margin-right: 15px;
    margin-top: 12px;
    margin-left: 5px;}


#Site-icon-3 {
    background-color:#000;
    width: 25px;
    height: 25px;
    float: left;
    margin-right: 15px;
    margin-top: 12px;
    margin-left: 5px;
}

#Site-icon-3.SiteIconHover {
    background-color:red;
    width: 25px;
    height: 25px;
    float: left;
    margin-right: 15px;
    margin-top: 12px;
    margin-left: 5px;}


#Headerhome, #HeaderSites, #HeaderApps {

background: #254661;
font-weight: normal;
color: #eeeeee;
box-sizing: border-box;
outline: 0;
line-height:50px;
text-decoration: none;
font-size: 100%;
list-style: none;
width:240px;
height:50px;
display: block;
cursor: pointer;
margin-top: 2px;
margin-left:-20px;
margin-right:0px;
padding-left:20px;
font-family:'Segoe UI';

}

#HeaderSites.menuSelected {
    border-left: 3px solid #26b3f7;
background: #18374f;
}

#Headerhome.menuSelected {
    border-left: 3px solid #26b3f7;
background: #18374f;
}

#HeaderApps.menuSelected {
    border-left: 3px solid #26b3f7;
background: #18374f;
}

演示: JSFiddle 已更新

我改进了你的代码。您可以编写更少的代码。

往下看:

JS:

$(document).ready(function(){
    $('.item').on('click', function(){
        $('.item').removeClass('menuSelected');
        $('.item').children('div').removeClass('SiteIconHover');

        $(this).addClass('menuSelected');
        $(this).children('div').addClass('SiteIconHover');
    });
});

我还更新了您的代码,这样您就可以查看样式的变化,因为您可以拥有 css 代码。

https://jsfiddle.net/gon250/xwg0Lv9d/6/

希望对您有所帮助。

你的代码有很多问题,你也需要改进CSS,看看fiddle,我试着改进你的代码,希望对你有帮助

JS Fiddle

我把你的js改成了下面的

function selectMenu(toSelect) {
    toSelect.addClass('menuSelected').siblings().removeClass('menuSelected');
    toSelect.children().addClass('SiteIconHover');
    toSelect.siblings().children().removeClass('SiteIconHover');
}

selectMenu($("#Headerhome"));

$("#SideNav").on('click', function(event) {
    if(event.target.id !== 'SideNav')
        selectMenu($(event.target));
    event.stopPropagation();
});

我已经在下面更新了您的代码:

$("#Headerhome").addClass('menuSelected');

$("#Headerhome").on('click', function () {
    var thisSelected = $(this).hasClass('menuSelected');
    if(!thisSelected) {
        $('#HeaderSites, #HeaderApps, #Site-icon-1, #Site-icon-3').removeAttr('class');
        $(this).addClass('menuSelected');
        $('#Site-icon-1').addCass('SiteIconHover2');
    } else {
        $(this).removeAttr('class');
    }
});

$("#HeaderSites").on('click', function () {
    var thisSelected = $(this).hasClass('menuSelected');
    if(!thisSelected) {
        $('#Headerhome, #HeaderApps, #Site-icon-1, #Site-icon-3').removeAttr('class');
        $(this).addClass('menuSelected');
        $('#Site-icon-2').addCass('SiteIconHover2');
    } else {
        $(this).removeAttr('class');
    }
});

$("#HeaderApps").on('click', function () {
    var thisSelected = $(this).hasClass('menuSelected');
    if(!thisSelected) {
        $('#Headerhome, #HeaderSites, #Site-icon-1, #Site-icon-2').removeAttr('class');
        $(this).addClass('menuSelected');
        $('#Site-icon-3').addCass('SiteIconHover3');
    } else {
        $(this).removeAttr('class');
    }
});

您还可以在此处查看 Fiddle link:https://jsfiddle.net/xwg0Lv9d/7/