为什么.fadeOut()不起作用,但.hide()在jquery中隐藏附加的div时工作正常?

时间:2012-10-22 19:25:43

标签: jquery

我想显示一个div并在几秒钟后删除它。就这么简单。 所以在我的html中我得到了:<div id="msg"></div>

我有这个功能:

function showWarning(text) {
            $('<div>'+text+'</div>').appendTo('#msg').hide().fadeIn('fast').delay(1000).queue(function() {
                $(this).fadeOut();
        });
    }

我找不到任何方法来完成这项工作。 fadeOut()被调用,但屏幕上没有任何反应。 如果我将fadeOut()更改为hide(),则可以正常使用。但是......如果我尝试hide(500),那么它将无效。

我认为这是微不足道的 - 初学者的错误 - 但我找不到它。

由于

4 个答案:

答案 0 :(得分:3)

fadeIn()一定不能完成运行,在使用fadeOut之前使用回调函数。

$('<div>'+text+'</div>').appendTo('#msg').hide().fadeIn('fast', function () {
    $(this).fadeOut();
});

答案 1 :(得分:2)

function showWarning(text) {
    $('<div />', {text: text}).fadeIn('fast', function() {
        $(this).delay(1000).fadeOut(600);
    }).appendTo('#msg');
}

FIDDLE

答案 2 :(得分:1)

像这样:http://jsfiddle.net/b7EV8/

function showWarning(text) {
    $('<div id="msgtext">' + text + '</div>').appendTo('#msg').hide().fadeIn('fast', function() {
        $('#msgtext').delay(1000).fadeOut();
    });
}

showWarning('hello')

答案 3 :(得分:1)

function showWarning(text) {
  $('<div>').text(text).appendTo('#msg').hide().fadeTo(400,1,function(){
      $(this).delay(1000).fadeOut();
  });
}

demo