2010-03-07 4 views
1

функция checkSession() { $ .ajax ({URL: "session.php", успех: функция (данные) { если (данные == 1) { вар postFilen = 'msg.php'; $. post(). { } else { $ ('. msg'). { $ (". msg") .html (данные) .find (". message2"). fadeIn ("slow") } else { $ ('. msg'). скрыть();} }}); // setInterval ('checkSession()', 1000);.Где поместить таймаут() fadeout?

Теперь я хочу, чтобы поместить в FADEOUT .MSG через 5 секунд, было показано Как я сделайте это .. Я пробовал:

function checkSession(){ 
    $.ajax({url: "session.php", success: function(data){ 
     if(data == 1){ 
      var postFilen = 'msg.php'; 
      $.post(postFilen, function(data){ 
      $(".msg").html(data).find(".message2").fadeIn("slow") 
        setTimeout(function() { 
    $('.msg').fadeOut('slow'); 
     }, 5000); 
      }); 
     }else{ 
      $('.msg').hide(); 
     } 
    }}); 
// setInterval('checkSession()',1000); 
} 

Но тогда сообщение обыкновение появляться после того, как 1-ый раз ..

ответ

2

Попробуйте работать с delay способом: http://api.jquery.com/delay/

$('#foo').slideUp(300).delay(800).fadeIn(400); 

Я ваш случай, что-то вроде:

$(".msg") 
    .html(data) 
    .find(".message2") 
    .fadeIn("slow") 
    .parent('.msg') 
    .delay(5000) 
    .fadeOut('slow') 

[редактировать: фиксированный пример]

[edit2: новый пример]


Это один, кажется, здесь работает отлично:

<div class="msg"></div> 
<p> 
    Some text <br /> <a id="bloup" href="">show message</a> 
</p> 

, а затем

$(function() { 
     $("#bloup").click(function(e) { 
      e.preventDefault(); 

      var data = "<span class='message2'>Hello world</span>"; 

      $(".msg") 
       .show() 
       .html(data) 
       .find('.message2') 
       .fadeIn('slow') 
       .parent('.msg') 
       .delay(2000).fadeOut('slow'); 
     }) 
    }); 
+0

Не работает. В первый раз это затухание в то же время, что и собиралось показать, а затем второе и оставшееся время, когда оно не появилось – Karem

+0

Исправить, родительский и задержка, где перевернуты. Исправлен мой пример. –

+0

+1 Хорошее использование 'delay'. –

0

Первая попытка написать чистый код для нас, чтобы понять ваши проблема лучше, ваша обратная связь $.post отсутствует }); эти символы в конце на первом фрагменте сверху, а отступы плохие на втором.

Затем ознакомьтесь с этими ссылками, чтобы понять использование setTimeout.

https://developer.mozilla.org/en/DOM/window.setTimeout

http://www.w3schools.com/jsref/met_win_settimeout.asp

И на ваш вопрос:

если вы поставите var t = перед тем setTimeout(function() { он будет работать, как и ожидалось,

Надежда это помогает, Синана.

+0

Почему он должен работать, когда я делаю setTimeout в var с именем «t»? – Karem