【问题标题】:Where to place the timeout() fadeout?在哪里放置 timeout() 淡出?
【发布时间】:2010-03-07 09:46:11
【问题描述】:

函数 checkSession(){ $.ajax({url: "session.php", 成功: 函数(数据){ 如果(数据 == 1){ var postFilen = 'msg.php'; $.post(postFilen,函数(数据){ $(".msg").html(data).find(".message2").fadeIn("slow") }别的{ $('.msg').hide(); } }}); // setInterval('checkSession()',1000);

现在我想在 .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);
}

但是在第一次之后消息不会出现..

【问题讨论】:

    标签: javascript jquery timeout fadeout


    【解决方案1】:

    尝试使用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');
          }) 
       });
    

    【讨论】:

    • 不起作用..第一次它在要显示的同时淡出,然后第二次和其余时间它没有出现
    • 正确,父级和延迟倒置。修正了我的例子。
    • 现在它会像第一次一样淡出,但第二次和其余时间它不会再次出现..就像我尝试自己时遇到的问题一样
    • 可能是因为你使用了$('.msg').hide(),但之后没有使用.show()?由于 .message2 包含在 .msg 中,如果 .msg 被隐藏,则 .message2 不会显示 :)
    • 好的,所以我删除了整个 else{ $('.msg').hide() } ,第一次后仍然不显示
    【解决方案2】:

    首先尝试为我们编写更简洁的代码以更好地理解您的问题,您的$.post 的回调函数在顶部的第一个sn-p 的末尾缺少}); 这些字符,第二个缩进不好。

    然后查看这些链接以了解 setTimeout 的使用。

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

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

    关于你的问题:

    如果您将var t = 放在setTimeout(function() { 之前,它将按预期工作,

    希望这些对您有所帮助,思南。

    【讨论】:

    • 为什么当我将 setTimeout 设置为名为“t”的 var 时它会起作用?
    猜你喜欢
    • 2021-06-05
    • 2011-06-29
    • 2018-03-27
    • 2011-02-15
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多