كيف يمكنني إزالة اسم فئة موجود وإضافة اسم جديد باستخدام jQuery وملفات تعريف الارتباط؟

StackOverflow https://stackoverflow.com/questions/804584

سؤال

كيف يمكنك إزالة اسم الفصل واستبداله باسم جديد؟

<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>

في هذه الحالة، عند النقر على اللون الأحمر أو الأخضر أو ​​الأزرق، سيتغير اسم فئة الجسم وفقًا لذلك.كما أنه سيتم إنشاء ملف تعريف الارتباط الذي سيحفظ الاختيار.

لقد قمت بتجربة jQuery .addClass وهو يعمل، ولكنه يضيف فئة فوق الفئة الموجودة.كما أنني لا أستطيع إدارة حفظ ملف تعريف الارتباط.

هل كانت مفيدة؟

المحلول

يستخدم:

$('.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);
}

مثال العمل هنا.شكرا ل وضع المراوغات للحصول على رمز ملف تعريف الارتباط المُعد مسبقًا (رمز ملف تعريف الارتباط لقطع ملفات تعريف الارتباط؟)

نصائح أخرى

بدون jQuery يمكنك القيام بذلك بسطر بسيط مثل:

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

يؤدي هذا إلى إزالة الفئة المخصصة للعنصر بشكل فعال واستبدالها بما تريد.

من أجل الكعك، لدى PPK بعض الطرق البسيطة لقراءة/كتابة/مسح ملفات تعريف الارتباط.

createCookie("mySiteCookie", "red", 7); // Set the cookie to expire in 7 days.
readCookie("mySiteCookie"); // Should yield "red"

سوف تحتاج أيضا com.removeClass.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top