Функция Jquery Cookie
Я все еще новичок в этом, поэтому, пожалуйста, потерпите меня. У меня есть функция, которая добавляет класс на событие щелчка, это прекрасно работает. Но я также хотел бы, чтобы нажатая функция сохранялась в виде файла cookie, чтобы при следующем посещении сайта этим классом эти классы все еще оставались / повторно применялись. Я использую jquery.cookie для этого. Мой код выглядит следующим образом.
$(".bblue").click(function bblue() {
$("dl").addClass("bbluebg");
$("dd .button").addClass("buttonb");
$('.button img').attr('src',function(i,e){return e.replace("White","DBlue");});
$.cookie("color", function bblue(){} , { expires: null, path: '/' });
});
Когда я звоню $.cookie('color');
это возвращается function bblue(){}
но он не запускает функцию, когда страница загружается дальше.
2 ответа
Я предполагаю, что вы хотите сохранить предпочтения и принять меры на основе этого. Попробуйте что-то вроде этого:
// Event-independent color change function
var bblue = function() {
$("dl").addClass("bbluebg");
$("dd .button").addClass("buttonb");
$('.button img').attr('src', $('.button img').replace("White","DBlue"));
}
// Click action
$(".bblue").click(function () {
// Change the color
bblue();
// Store the preference
$.cookie("color", "blue" , { expires: null, path: '/' });
});
// On page load
$(document).load(function() {
// If they chose blue before, change the color
if ($.cookie("color") == "blue") bblue();
});
Функция больше не запускается, потому что пользователь ничего не нажимает при перезагрузке страницы. Ваша функция запускается только тогда, когда кто-то нажимает .bblue
элемент.
Вам нужно получить значение cookie и установить классы, где это уместно, в готовом документе. Классы не будут придерживаться, вы должны повторно применить их. Вы хотите использовать...
$(function() {
var color = $.cookie("color");
// Set classes according to color here
});
Который будет выполнять и устанавливать все классы после загрузки страницы.