Javascript 将类添加到匹配元素中,而不添加其他特定类
每当用户单击主体时,我都希望向某个元素添加一个类,只要该元素没有特定的类。问题是,我重复使用这个元素,其中一些元素将具有我提到的特定类,而其他元素则不会。如果一个元素有这个类,在我当前的代码中,任何元素都不会添加新的类 例如: $'body'。单击,函数{ 如果$'.box'.hasClass'red'和&!$'.box'.hasClass'stay-red'{ $'.box'.addClass'blue'; } }; html,正文{ 背景:浅蓝色; 身高:100%; } .盒子{ 高度:20px; 宽度:20px; 边缘底部:10px; } 瑞德先生{ 背景:红色; } 蓝先生{ 背景:蓝色; } 这就是你想要的吗 :非选择器 这就是你想要的吗 :非选择器Javascript 将类添加到匹配元素中,而不添加其他特定类,javascript,jquery,css,dom-manipulation,Javascript,Jquery,Css,Dom Manipulation,每当用户单击主体时,我都希望向某个元素添加一个类,只要该元素没有特定的类。问题是,我重复使用这个元素,其中一些元素将具有我提到的特定类,而其他元素则不会。如果一个元素有这个类,在我当前的代码中,任何元素都不会添加新的类 例如: $'body'。单击,函数{ 如果$'.box'.hasClass'red'和&!$'.box'.hasClass'stay-red'{ $'.box'.addClass'blue'; } }; html,正文{ 背景:浅蓝色; 身高:100%; } .盒子{ 高度:
使用过滤器将更容易,并将避免您的问题: $'body'。单击,函数{ $'.box'.filter'.red:不.保持红色'.addClass'blue'; }; html,正文{ 背景:浅蓝色; 身高:100%; } .盒子{ 高度:20px; 宽度:20px; 边缘底部:10px; } 瑞德先生{ 背景:红色; } 蓝先生{ 背景:蓝色; }
使用过滤器将更容易,并将避免您的问题: $'body'。单击,函数{ $'.box'.filter'.red:不.保持红色'.addClass'blue'; }; html,正文{ 背景:浅蓝色; 身高:100%; } .盒子{ 高度:20px; 宽度:20px; 边缘底部:10px; } 瑞德先生{ 背景:红色; } 蓝先生{ 背景:蓝色; } 您可以使用:
$('body').on('click', function(){
$('.box.red:not(.stay-red)').addClass('blue');
});
或使用以下各项循环浏览所有内容:
$('body').on('click', function(){
$('.box').each(function() {
if ($(this).hasClass('red') && !$(this).hasClass('stay-red')) {
$(this).addClass('blue');
}
});
});
您可以使用:
$('body').on('click', function(){
$('.box.red:not(.stay-red)').addClass('blue');
});
或使用以下各项循环浏览所有内容:
$('body').on('click', function(){
$('.box').each(function() {
if ($(this).hasClass('red') && !$(this).hasClass('stay-red')) {
$(this).addClass('blue');
}
});
});
$function{
$'body'。单击,函数{
$'.box'.eachfunction{
如果$this.hasClass'red'&&!$this.hasClass'stay-red'{
$this.addClass'blue';
}
}
};
}
html,正文{
背景:浅蓝色;
身高:100%;
}
.盒子{
高度:20px;
宽度:20px;
边缘底部:10px;
}
瑞德先生{
背景:红色;
}
蓝先生{
背景:蓝色;
}
$function{
$'body'。单击,函数{
$'.box'.eachfunction{
如果$this.hasClass'red'&&!$this.hasClass'stay-red'{
$this.addClass'blue';
}
}
};
}
html,正文{
背景:浅蓝色;
身高:100%;
}
.盒子{
高度:20px;
宽度:20px;
边缘底部:10px;
}
瑞德先生{
背景:红色;
}
蓝先生{
背景:蓝色;
}
如果要避免将新类添加到所有元素(如果其中一个元素具有另一个类),可以使用或:
如果要避免将新类添加到所有元素(如果其中一个元素具有另一个类),可以使用或:
这是您需要的body onclick:
$('body').on('click', function(){
$('.box.red:not(.stay-red)').removeClass('red').addClass('blue');
});
您还需要删除class.red,即使在这种情况下它仍然有效,因为class.blue是在CSS中的class.red之后定义的
$('body').on('click', function(){
$('.box.red:not(.stay-red)').removeClass('red').addClass('blue');
});
您还需要删除该类。红色,即使在这种情况下,它也可以工作,因为类.blue是在CSS中的class.red之后定义的使用.each方法作为$'.box'返回数组而不是单个元素假设它值得删除.blue上的.red类,但是如果除了基于类的选择之外,您没有做太多DOM操作,那么请使用中给出的直接CSS选择器/过滤器下面的答案使用.each method as$'.box'返回数组而不是单个元素假设它值得删除.blue上的.red类,但是如果您除了基于类的选择之外没有做太多DOM操作,那么请使用下面的答案中给出的直接css选择器/过滤器。您的意思是$'.red:不是.stay-red'缺少一部分,红色类。红色:不是…然后是$。红色:不是。保持红色“你的意思是$”。红色:不是。保持红色“缺少一部分,红色类。盒子。红色:不是…然后是$'。盒子。红色:不是。保持红色'