Работа JS. Не работают события.

Print RSS
332

F
Author
Землянин
0
Здравствуйте. При разработки небольшого приложения для сайта я столкнулся с такой проблемой. У меня есть некий скрипт, например:

Добавлено через 01:17 сек.
$(document).ready(function () {

	var date = new Date( new Date().getTime() + 60*1000 );
	
	function getCookie(name) {
	  var matches = document.cookie.match(new RegExp(
		"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	  ));
	  return matches ? decodeURIComponent(matches[1]) : undefined;
	}
	
	if(getCookie("specPanel")=="on"){
		specStyle(getCookie("fontSize"),getCookie("bg"),getCookie("fontColor"));
		$("#btn-spec").html("Стандартная версия сайта");
		$("#setting-spec").css({'display':'block'});
	}
	
	function specStyle(fontSize, bg, fontColor){
		$("html, font, p, a, b:no t(.not), span:no t(.not), table td, .main_menu").css({"color":fontColor, "background-image":"none","background-color" : bg, 'font-size': fontSize, "font-style":"normal","font-family": "Geneva, Arial, Helvetica, sans-serif"});
		$("#logotip table a").html("В помощь студенту заочнику.");
		$(".main_menu img,marquee,#logotip table a img").css({"display":"none"});
		$(".main_menu").css({"margin":"20px 0 20px"});
		$("#footer").css({"margin":"30px 0 30px"});
	
		$(".blog_small_row b, .blog_small_row a").css({'font-size': fontSize});
		$("#logo_text font").css({"font-size":"40px"});
	}
F
Author
Землянин
0
	$("#btn-spec").click(function () {
		if (!navigator.cookieEnabled) {
			alert('Включите cookie для комфортной работы с этим сайтом');
		}
		if($("#btn-spec").html()== "Включить версию для слабовидящих"){
			$("#btn-spec").html("Стандартная версия сайта");
			$("#setting-spec").css({'display':'block'});
			document.cookie="fontSize=18px; path=/; expires="+date.toUTCString();
			document.cookie="bg=#fff; path=/; expires="+date.toUTCString();
			document.cookie="fontColor=#000; path=/; expires="+date.toUTCString();
			//document.cookie="fontSize=18px; path=/; expires="+date.toUTCString();
			document.cookie="specPanel=on; path=/; expires="+date.toUTCString();
			
			specStyle(getCookie("fontSize"),getCookie("bg"),getCookie("fontColor"));
		}else{
			$("#btn-spec").html("Включить версию для слабовидящих");
			$("#setting-spec").css({'display':'none'});
			document.cookie="specPanel=; path=/; expires="+date.toUTCString();
			location.reload();
		}
	});

Добавлено через 01:12 сек.
$(".ss").click(function(){
		var fontSize = $(this).attr("data-font-size");
		document.cookie="fontSize="+fontSize+"; path=/; expires="+date.toUTCString();
		specStyle(getCookie("fontSize"),getCookie("bg"),getCookie("fontColor"));
	});
	
	$(".bgs").click(function(){
		var bg = $(this).attr("data-bg");
		var fontColor = $(this).attr("data-font");
		document.cookie="bg="+bg+"; path=/; expires="+date.toUTCString();
		document.cookie="fontColor="+fontColor+"; path=/; expires="+date.toUTCString();
		specStyle(getCookie("fontSize"),getCookie("bg"),getCookie("fontColor"));
	});

});

Добавлено через 02:59 сек.
Почему через небольшое время простоя события клик по элементам .ss и .bgs перестаёт работать?
F
Author
Землянин
0
Кажется разобрался, события срабатывают, но куки уже пустые

Пришелец
0
3. Mr.MarПых, возможно какой то контент на странице у тебя подгружается через ajax или модифицируется.
Всегда смотри console.info()... И замени все .click(function() на .on('click', function()

Пацак
0
4. Stanislav-WEB, может помочь, но .on() не хорошо работает на моб. устройствах и сафари.
по теме, код не смотрел, но советую использовать плагин jQuery для работы с cookie, удобней.
Stickers / Tags / Rules / Top topics / Top Posts / Search