Javascript 为什么removeClass不工作?

Javascript 为什么removeClass不工作?,javascript,jquery,html,addclass,removeclass,Javascript,Jquery,Html,Addclass,Removeclass,我猜这真的很简单,但它一直让我发疯!下面是我的jquery代码,下面是我的 尝试一些这样的选择,伙计,所有这些在某种程度上或其他工作,也许他们可以适合你正在寻找的 $("#item").removeClass(); $("#item").removeAttr('class'); $("#item").attr('class', ''); 问题是您正在尝试查找没有兄弟姐妹的div的兄弟姐妹。我已经改变了一些CSS和JS。这应该是你想要的 JS: CSS:更新 演示:更新了我改进了你的代码。您可以

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


尝试一些这样的选择,伙计,所有这些在某种程度上或其他工作,也许他们可以适合你正在寻找的

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

问题是您正在尝试查找没有兄弟姐妹的div的兄弟姐妹。我已经改变了一些CSS和JS。这应该是你想要的

JS:

CSS:更新


演示:更新了

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

请看下面:

JS:

此外,我还更新了您的代码,以便您可以查看样式中的更改,因为您可以使用lees
css
code


我希望这会有帮助

你的代码有很多问题,你也需要改进CSS,看看小提琴吧,我试着改进你的代码,希望能有所帮助

我将您的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链接:

可能重复您是否尝试过使用浏览器开发人员工具进行调试?必须有一个缺少的元素,所以您不能从
未定义的
中添加或删除类。这是因为您试图从不存在的同级中删除该类。我想我有解决方案,但您能解释一下您试图实现的目标吗?同样,这是因为您在没有同级的对象上使用。同级。您必须转到站点图标的父级,然后获取其同级图标和这些同级图标的子级图标。这基本上比你需要的要复杂得多。我想你需要这样的东西。图标需要是独立的,而不是完全相同的。你的意思是它们需要是独立的类吗?现在这三个类有独立的CSS规则。图标需要是独立的,而不是完全相同的。@Ziggy31这不是有效的重复代码。。因此,如果您希望多个div使用相同的样式,则必须使用
。同样,在javascript中,你必须使用类,这样你才能编写lees代码,这会更好。图标会有所不同——例如,我使用了背景色。但他们的背景不同images@Ziggy31好的,你的意思是默认情况下第一个。让我做一个小小的改变。@Ziggy31这里有一个演示:我默认地将类添加到html中,然后单击
onclick
更改样式。
#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;
}
$(document).ready(function(){
    $('.item').on('click', function(){
        $('.item').removeClass('menuSelected');
        $('.item').children('div').removeClass('SiteIconHover');

        $(this).addClass('menuSelected');
        $(this).children('div').addClass('SiteIconHover');
    });
});
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');
    }
});