Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Плавно скрыть текст, изменить его и плавно показать (https://javascript.ru/forum/jquery/42902-plavno-skryt-tekst-izmenit-ego-i-plavno-pokazat.html)

gh321 13.11.2013 16:23

Плавно скрыть текст, изменить его и плавно показать
 
Если так сделать
$("#q").hide(1000).text("NEW TEXT").show(1000);

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

Почему так происходит?
И как сделать что бы - исчезал старый текст - а потом новый появлялся?

ksa 13.11.2013 16:35

Цитата:

Сообщение от gh321
как сделать что бы - исчезал старый текст - а потом новый появлялся?

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(function (){
	$("#q").fadeOut(
		1000,
		function () {
			$("#q").text("NEW TEXT").fadeIn(1000)
		}
	);
});
</script>
</head>
<body>
<p id='q'>Text</p>
</body>
</html>

gh321 13.11.2013 17:12

Вопрос элементарный наверно, но почему цепочка
$("#q").hide(1000).text("NEW TEXT").show(1000);

скрывает и показывает новый текст, а старый визуально не трогает?

В вашем пример через callback насильно вызываем
$("#q").text("NEW TEXT").fadeIn(1000)

а в цепочки hide(1000) первым не выполняется почему то.

animatio 13.11.2013 17:38

Дело в том что интерпретатор JS не понимает, что текст нужно поменять после окончания скрытия. Для того чтобы это произошло нужно выполнить callback функцию после скрытия.
$("#q").hide(1000,function(){
 $(this).text("NEW TEXT").show(1000);
});

Я думаю связано это с тем, что при использовании .hide и .show используется тайм-аут, а это автоматически переводит эти инструкции в конец стека вызовов. Вот и получается, что инструкция .text в Вашем примере выполнится быстрее скрытия. Я думаю, что разработчики jQuery именно поэтому предоставляют возможность указывать коллбэк для таких методов как animate, hide, show


Часовой пояс GMT +3, время: 22:07.