删除/替换类
有几种方法可以删除所有类,只留下一个。你可以使用$.attr
:
$(".box").on("click", function(){
$(this).attr("class", "test");
});
这会将 的完整值设置class
为单个类名。或者,您可以className
在元素本身上设置:
$(".box").on("click", function(){
this.className = "test";
});
或者,您可以不带任何参数调用(删除所有类),然后通过添加您的类$.removeClass()
来跟进:test
$(".box").on("click", function(){
$(this).removeClass().addClass("test");
});
避免歧义
我假设您在页面上没有任何其他.box
元素 - 如果有,则需要稍微修改此处使用的选择器以仅影响我们希望定位的框。
如果这些盒子在一个更大的容器中:
<div id="boxes">
<div class="box w-25 h-25">...</div>
<div class="box w-30 h-30">...</div>
</div>
我们可能会更改选择器以包含容器id
:
$("#boxes .box").on("click" function(){
/* React */
});
切换开/关
从评论中,OP 表示希望记住原始类,并.test
在第二次单击该元素时将其替换掉。以下是一种可能的解决方案:
$(".box").on("click", function(){
// Store original class attribute as data
$(this).data("o") || $(this).data("o", $(this).attr("class"));
// Set new class attribute to test, or to original
$(this).attr("class", function(i,o){
return o != $(this).data("o") ? $(this).data("o") : "test" ;
});
});