Javascript 为什么removeClass不工作?
我猜这真的很简单,但它一直让我发疯!下面是我的jquery代码,下面是我的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:更新 演示:更新了我改进了你的代码。您可以
尝试一些这样的选择,伙计,所有这些在某种程度上或其他工作,也许他们可以适合你正在寻找的
$("#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');
}
});