setTimeout()没有执行

时间:2010-03-29 15:59:27

标签: javascript jquery settimeout

我有这个简单的功能,它向用户显示一条消息。如果我添加超时参数,它将自动滑回,如果不是用户必须单击它以摆脱。但超时位不起作用。

function feedback(text, timeout){
    $('#feedback').text(text).slideDown('fast');

    $('#feedback').click(function(){
        $(this).slideUp();
    });
    if(timeout){
        setTimeout(function(){
            $('#feedback').slideup();
        }, timeout);
    }
}

2 个答案:

答案 0 :(得分:3)

问题在于$('#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();
    });
}

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

答案 1 :(得分:-3)

将整个函数调用置于set timeout函数中无效。你的setTimeout永远不会像你想要的那样触发,因为setTimeout只会接受一个函数引用。

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

请尝试以下代码:

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