gpt4 book ai didi

jquery - 如何使用 addClass 和 removeClass 在类之间切换?

转载 作者:技术小花猫 更新时间:2023-10-29 11:20:31 24 4
gpt4 key购买 nike

我创建了自己的 Switcher jQuery,我想在单击另一种颜色时删除类,例如:我在 body 标签上有“蓝色”类,当有人单击红色时应该删除蓝色类并将其替换为红色类等..

代码:

$("body").addClass("wide light blue");

// Switcher jQuery Plugin
$(".switcher-toggle").click(function() {
$("#switcher").toggleClass("open");
});

// Theme Layout Switch
$(".layout").change(function() {
var layout = $(".layout").val();
$(".wrapper").css("width",layout);
});

// Theme Skins Switch
$(".skins").change(function() {
var skin = $(".skins").val();
$("body").toggleClass(skin);
});

// Theme Colors Switch
$(".colors span").each(function() {
var data_color = $(this).attr("data-color");
$(this).click(function() {
$("body").toggleClass(data_color);
});
});

演示: https://jsfiddle.net/uikithemes/p18cqa5s/

最佳答案

首先,请注意 each() 循环是多余的,因为您可以直接在点击处理程序中访问 data-color 属性。

其次,为了实现您的要求,您可以在使用 addClass 添加新类之前,使用 removeClass 提供要删除的所有类的空格分隔列表。试试这个:

$(".colors span").click(function() {
$("body")
.removeClass('blue red green orange carrot violet pink gold')
.addClass($(this).data("color"));
});

Updated fiddle

然而,如果添加或删除颜色,这可能会变得有点难以维护。更好的模式是在选择选项或单击颜色时调用单个函数来设置 body 元素上的类。试试这个:

$(".skins, .layout").change(applyClasses);
$(".colors span").click(function() {
$(this).addClass('active').siblings().removeClass('active');
applyClasses();
});

function applyClasses() {
var classes = [
$(".skins").val(),
$(".layout").val(),
$(".colors span.active").data('color')
];

$('body').removeClass().addClass(classes.join(' '));
}

applyClasses(); // on load

Updated fiddle

关于jquery - 如何使用 addClass 和 removeClass 在类之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34373849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com