За последние 24 часа нас посетил 16231 программист и 1666 роботов. Сейчас ищут 935 программистов ...

Не получается с заменой div

Тема в разделе "JavaScript и AJAX", создана пользователем LAlexS, 10 сен 2012.

  1. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Не получается сделать, чтобы второй не появлялся пока первый не исчезнет. Что не так делаю?

    Код (Text):
    1. <script type='text/javascript'>
    2.   $(document).ready(function() {
    3.     $("A#trigger").toggle(function() {
    4.       $("DIV#pict").fadeOut(1);
    5.       setTimeout($(this), 1500);
    6.       $("DIV#pict2").fadeIn(1500);
    7.       return false;
    8.     },  
    9.     function() {
    10.       $("DIV#pict2").fadeOut(1);
    11.       setTimeout($(this), 1500);
    12.       $("DIV#pict").fadeIn(1500);
    13.       return false;
    14.     });
    15.   });
    16. </script>
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    setTimeout - это не sleep из php. Он работает совсем по-другому. Он запускает отсчёт времени, через которое будет вызвана функция, указанная первым параметром. Но при этом код, который расположен далее по тексту после setTimeout - выполнится сразу же.
     
  3. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Хоть направление подскажите как мне решить проблему
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну, вот такой код с таймаутом нарисовался:
    Код (Text):
    1. <!DOCTYPE html>
    2. <html>
    3.     <head>
    4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5.         <title>Timeout test</title>
    6.         <script type="text/javascript" src="jquery.js"></script>
    7.         <script type="text/javascript">
    8.             var first = true;
    9.             var animation = false;
    10.             $(document).ready(function() {
    11.                 $('#click_me').click(function() {
    12.                     if(!animation) {
    13.                         animation = true;
    14.                         $('#' + (first ? 'first' : 'second')).fadeOut(1000);
    15.                         setTimeout(function(f) {
    16.                             return function() {
    17.                                 $('#' + (f ? 'second' : 'first')).fadeIn(1000, function() {
    18.                                     animation = false;
    19.                                 });
    20.                             }
    21.                         }(first), 1000);
    22.                         first = !first;
    23.                     }
    24.                 });
    25.             });
    26.         </script>
    27.     </head>
    28.     <body>
    29.         <button id="click_me">Click me!</button>
    30.         <div id="first">Первый</div>
    31.         <div id="second" style="display: none;">Второй</div>
    32.     </body>
    33. </html>
    Но вообще, у jQuery функций fadeIn и fadeOut есть ещё и второй аргумент - "callback". Это функция, которая будет вызвана при завершении анимации.
    Код (Text):
    1. <!DOCTYPE html>
    2. <html>
    3.     <head>
    4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5.         <title>Timeout test</title>
    6.         <script type="text/javascript" src="jquery.js"></script>
    7.         <script type="text/javascript">
    8.             var first = true;
    9.             var animation = false;
    10.             $(document).ready(function() {
    11.                 $('#click_me').click(function() {
    12.                     if(!animation) {
    13.                         animation = true;
    14.                         $('#' + (first ? 'first' : 'second')).fadeOut(1000, function() {
    15.                             $('#' + (first ? 'second' : 'first')).fadeIn(1000, function() {
    16.                                 first = !first;
    17.                                 animation = false;
    18.                             })
    19.                         });
    20.                     }
    21.                 });
    22.             });
    23.         </script>
    24.     </head>
    25.     <body>
    26.         <button id="click_me">Click me!</button>
    27.         <div id="first">Первый</div>
    28.         <div id="second" style="display: none;">Второй</div>
    29.     </body>
    30. </html>
     
  5. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Спасибо, за помощь!!