Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.11.2013, 16:23
Интересующийся
Отправить личное сообщение для gh321 Посмотреть профиль Найти все сообщения от gh321
 
Регистрация: 14.02.2011
Сообщений: 23

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

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

Почему так происходит?
И как сделать что бы - исчезал старый текст - а потом новый появлялся?
Ответить с цитированием
  #2 (permalink)  
Старый 13.11.2013, 16:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от 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>
Ответить с цитированием
  #3 (permalink)  
Старый 13.11.2013, 17:12
Интересующийся
Отправить личное сообщение для gh321 Посмотреть профиль Найти все сообщения от gh321
 
Регистрация: 14.02.2011
Сообщений: 23

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

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

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

а в цепочки hide(1000) первым не выполняется почему то.
Ответить с цитированием
  #4 (permalink)  
Старый 13.11.2013, 17:38
Аватар для animatio
Интересующийся
Отправить личное сообщение для animatio Посмотреть профиль Найти все сообщения от animatio
 
Регистрация: 21.02.2013
Сообщений: 15

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

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

Последний раз редактировалось animatio, 13.11.2013 в 17:46.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
меню как на mail.ru - его можно скрыть и содержимое раздвинется на всю страницу ange-linka Элементы интерфейса 4 16.09.2010 12:12
Как получить имя файла и изменить его? nedosalivan Общие вопросы Javascript 5 29.03.2010 17:51
получил текст, как его вместить в таблицу? Serj_Goblin Общие вопросы Javascript 14 14.08.2009 09:44
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30