如何使用jQuery和cookies删除现有的类名并添加一个新的类名?

3
你如何删除一个类名并用新的类名替换它?
<style>
    .red {background-color: #FF0000;}
    .green{background-color: #00FF00;}
    .blue {background-color: #0000FF;}
</style>

<body class="red">
    <ul>
        <li><a href="">red</a></li>
        <li><a href="">green</a></li>
        <li><a href="">blue</a></li>
    </ul>
</body>

在这种情况下,当您单击红色、绿色或蓝色时,body的类名将相应地更改。此外,它将创建一个cookie来保存选择。
我尝试了jQuery的.addClass方法,它是有效的,但是它会在现有类的基础上添加一个类。而且我无法管理保存cookie。
3个回答

18

使用:

$('.red').removeClass('red').addClass('blue');

这里是完整的可运行代码:

$(function() {
    $("a").click(function() {
        var color = $(this).text();
        $("body").removeClass().addClass(color);
        return false;
    });
});

现在让我们来看一下饼干部分

$(function() {
    $("a").click(function() {
        var color = $(this).text();
        $("body").removeClass().addClass(color);
        createCookie("color",color);
        return false;
    });

    if (readCookie("color") != null) {
      $("body").removeClass().addClass(readCookie("color"));

    }
    else {
      $("body").removeClass().addClass("red");
    }
});

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else
        var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }

    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ')
                c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0)
                return c.substring(nameEQ.length,c.length);
        }
        return null;
    }

    function eraseCookie(name) {
    createCookie(name,"",-1);
}

这里有一个工作示例。感谢QuirksMode提供的预制cookie代码(类似饼干模具的cookie代码?)


我尝试过了,但由于 cookie 值将替换该类名,因此它无法正常工作。 - kakkalo
非常感谢。这个工作完美无缺。现在是关于cookie的部分。有没有其他保存方式而不需要使用cookie插件? - kakkalo

4

没有 jQuery,你可以用一行简单的代码来做到这一点:

document.getElementsByTagName("body")[0].className = "red";

这将有效地移除分配给元素的类,并用您想要的内容替换它。
对于cookies,PPK有一些简单的方法来读取/写入/删除cookies
createCookie("mySiteCookie", "red", 7); // Set the cookie to expire in 7 days.
readCookie("mySiteCookie"); // Should yield "red"

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接