Плавно скрыть текст, изменить его и плавно показать
Если так сделать
$("#q").hide(1000).text("NEW TEXT").show(1000);
то исчезает и появляется новый текст, а нужно что бы старый текст сначала плавно скрылся, потом текст в span новый вставляю , а потом, его показать. Почему так происходит? И как сделать что бы - исчезал старый текст - а потом новый появлялся? |
Цитата:
<!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>
|
Вопрос элементарный наверно, но почему цепочка
$("#q").hide(1000).text("NEW TEXT").show(1000);
скрывает и показывает новый текст, а старый визуально не трогает? В вашем пример через callback насильно вызываем
$("#q").text("NEW TEXT").fadeIn(1000)
а в цепочки hide(1000) первым не выполняется почему то. |
Дело в том что интерпретатор JS не понимает, что текст нужно поменять после окончания скрытия. Для того чтобы это произошло нужно выполнить callback функцию после скрытия.
$("#q").hide(1000,function(){
$(this).text("NEW TEXT").show(1000);
});
Я думаю связано это с тем, что при использовании .hide и .show используется тайм-аут, а это автоматически переводит эти инструкции в конец стека вызовов. Вот и получается, что инструкция .text в Вашем примере выполнится быстрее скрытия. Я думаю, что разработчики jQuery именно поэтому предоставляют возможность указывать коллбэк для таких методов как animate, hide, show |
| Часовой пояс GMT +3, время: 20:13. |