代码之家  ›  专栏  ›  技术社区  ›  Ben Shelock

setTimeout()未执行

  •  0
  • Ben Shelock  · 技术社区  · 16 年前

    我有一个向用户显示消息的简单函数。如果我添加超时参数,它将自动向上滑动,如果不是,用户必须单击它来获取rid。但是超时位不工作。

    function feedback(text, timeout){
        $('#feedback').text(text).slideDown('fast');
    
        $('#feedback').click(function(){
            $(this).slideUp();
        });
        if(timeout){
            setTimeout(function(){
                $('#feedback').slideup();
            }, timeout);
        }
    }
    
    2 回复  |  直到 16 年前
        1
  •  3
  •   Nick Craver    16 年前

    问题是 $('#feedback').slideup(); 需要资本 U 在那里(例如) .slideUp() )您还可以在总体上缩短一点,这样做:

    function feedback(text, timeout){
        var fb = $('#feedback').text(text).slideDown('fast');
        if(timeout) fb.delay(timeout).slideUp();
    
        fb.click(function(){
            $(this).slideUp();
        });
    }
    

    它使用内置的 delay() jquery的功能以更简洁的方式实现相同的效果。

        2
  •  -3
  •   blacktarmac    16 年前

    将整个函数调用放入set timeout函数中是无效的。您的setTimeout永远不会像您希望的那样触发,因为setTimeout只接受函数引用。

    setTimeout(function(){
      $('#feedback').slideup();
    }, timeout);
    

    尝试以下代码:

    var ref = function() {
      $('#feedback').slideup();
    };
    setTimeout(ref, timeout);