0

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

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

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

2 回答 2

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()功能以更简洁的方式实现相同的效果。

于 2010-03-29T16:01:57.350 回答
-3

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

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

试试下面的代码:

var ref = function() {
  $('#feedback').slideup();
};
setTimeout(ref, timeout);
于 2010-03-29T16:09:18.920 回答