Показать сообщение отдельно
  #1 (permalink)  
Старый 13.05.2013, 20:11
Аспирант
Отправить личное сообщение для Neznayka Посмотреть профиль Найти все сообщения от Neznayka
 
Регистрация: 08.03.2013
Сообщений: 37

Два вопроса по animate() jQuery
Добрый день. У меня два вопроса по функции animate:
1) Если написать код в таком виде :
$(this).css({display:'block'}).animate({opacity:'1'}, 1000).delay(2000).animate({opacity:'0'}, 1000).css({display:'none'});

то он не исполнится, такое впечатление, что из-за того, что в одном стеке используются противоречащие друг-другу методы css : display:'block', display:'none'. Переделываю таким образом :
$(this).css({display:'block'}).animate({opacity:'1'}, 1000).delay(2000).animate({opacity:'0'}, 1000, 
				function()
				{
					$(this).css({display:'none'});
				});
и все начинает работать.. Но все таки вопрос в том, почему в первом исполнении код не работает ?
2)Второй вопрос такого содержания. Написал скрипт, в котором есть кнопка и див (изначально невидимый и прозрачный).. При клике на кнопку, див путем того же animate (приблизительно такой же код как в первом вопросе) сначала становится непрозрачным-видимым, далее висит в таком положении 2 сек.. и далее делается прозрачным.. При клике по самому диву (когда он находится в видимом состоянии) он должен принимать первоначальный вид (прозрачным-невидимым)
Код :
<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<title>Help</title>
	<style>
		div{
			display:none;
			position:absolute;
			top:50px;
			left:10px;
			width:200px;
			height:200px;
			background:#ccf;
			opacity:0;
		}
	</style>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
	<script>
		$(function()
		{
			$('button').click(function()
			{
				$("div").css({display:'block'}).animate({opacity:'1'}, 1000).delay(2000).animate({opacity:'0'}, 1000, 
				function()
				{
					$(this).css({display:'none'});
				});
			})
			$('div').click(function()
			{
				$(this).css({display:'none', opacity:'0'}).clearQueue();
			});
		});
	</script>
</head>
<body>
	<div></div>
	<button>Показать</button>
</body>
</html>

Если кликать по кнопке изрядно часто, то нарушается очередность выполнения применяемых методов к диву.. (начинает моргать). Хотя вроде применяю "clearQueue" для очистки очереди стека функций. Помогите пожалуйста разобраться, как правильно сделать так, чтобы отрабатывало верно при любом кликанье по элементам. Заранее благодарен за ответ.
Ответить с цитированием