Плавно скрыть текст, изменить его и плавно показать
Если так сделать
$("#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, время: 22:07. |