Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2010-03-26 00:35:46

Live
Участник
Зарегистрирован: 2009-12-04
Сообщений: 181
Рейтинг :   

Знатоки jQuery есть?

сабж, вопросец есть, сам не сильно силен в нем, хочу сделать вот что:
на сайте есть блок, который при нажатии на другой блок\ссылку (вне первого блока) скрывает первый блок. с етим вроде проблем нет. но нужно что бы менялась надпись с "скрыть блок" на "показать блок"
и что бы все ето сохранялось в кукисах что бы юзер при повторном заходе на сайт не нажимал скрыть блок если он ему не нужен

как такое сделать? smile

Не в сети

#2 2010-03-26 01:22:11

KhadeR
Участник
Зарегистрирован: 2009-09-16
Сообщений: 207
Рейтинг :   17 

Re: Знатоки jQuery есть?

Попробуй так:

<script type="text/javascript">
$(function(){    
	$(window).load(function() { 
	    if (readCookie('hide')) {
    	    hideblock();
	    } else $('#button2').hide();
    	function hideblock() {
	        $('#block').hide();
    	    $('#button1').hide();
        	$('#button2').show();        
	        createCookie('hide', 'yes', 365);
    	};
	    function showblock() {
    	    $('#block').show();
        	$('#button2').hide();
	        $('#button1').show();        
    	    eraseCookie('hide');
	    };
    	$('#button1').click(function() {
	        hideblock();
    	    return false;
	    });
    	$('#button2').click(function() {
	        showblock();
    	    return false;
	    });
	});
});

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);
};</script>
<a href="#" title="Показать" id="button2">Показать</a><a href="#" title="Скрыть" id="button1">Скрыть</a>

По сути, должно получиться...

Изменено KhadeR (2010-03-26 01:30:49)

Не в сети

#3 2010-03-26 07:48:06

Live
Участник
Зарегистрирован: 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Знатоки jQuery есть?

спс, работает, но есть пара моментов:
1. может изначально им присвоить класс какой нибудь, который содердит дисплей: нон
что бы у юзеров, у который отключен джава скрипт, не отображались ети ссылки

2. $('#block').hide(); $('#block').show(); я заменяю на $("#introbox").slideToggle("slow"); и получается если в кукисах сохранено что блок должен быть скрыт, при обновлении страницы блок виден и сразу плавно сворачивается - как сделать что бы он просто не был виден в таком случае?

Не в сети

#4 2010-03-26 12:05:23

KhadeR
Участник
Зарегистрирован: 2009-09-16
Сообщений: 207
Рейтинг :   17 

Re: Знатоки jQuery есть?

Значит так:

1. css:

.hide{display:none;}

2. html:

<a href="#" id="button" class="hide">Скрыть</a>

3. js:

<script type="text/javascript">
	$(window).load(function() { 
		$('#button').removeClass('hide');
		if (readCookie('hide')) {
			$('#introbox').hide()
			$('#button').text('Показать');
		};

		$('#button').click(function() {
	        $('#introbox').slideToggle('slow');
			if (readCookie('hide')) {
				$('#button').text('Скрыть');
				eraseCookie('hide');
			} else {
				$('#button').text('Показать');
		        createCookie('hide', 'yes', 365);		
			}
			return false;
		});
	});
	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);
	};
</script>

Изменено KhadeR (2010-03-26 12:08:45)

Не в сети

#5 2010-03-26 13:19:14

Live
Участник
Зарегистрирован: 2009-12-04
Сообщений: 181
Рейтинг :   

Re: Знатоки jQuery есть?

KhadeR, спасибо, имено то, что нужно smile

Не в сети

Подвал раздела

Работает на FluxBB