JQuery在5秒后删除.append

时间:2010-05-04 14:03:48

标签: jquery timeout

今天哦,天哪哦 - 哎呀

伙计们,最好的办法:

$j('.done').append('Your services have been updated');

(那些位完成)

然后在说5秒后删除追加,这样如果一个人重新提交表格(允许),追加不会继续添加文字?即更新一次“您的服务已更新”,两次会显示“您的服务已更新您的服务已更新”但我只希望您的服务已更新以显示一次

8 个答案:

答案 0 :(得分:20)

(function (el) {
    setTimeout(function () {
        el.children().remove('span');
    }, 5000);
}($j('.done').append('<span>Your services have been updated</span>')));

我知道它看起来很奇怪..我这样做是为了自我控制。当调用该匿名函数时,会立即执行追加...然后将附加元素保存为el在该匿名范围内,当timeout在5000毫秒后触发时,该范围本身将被删除。

修改

我编辑了上面的函数,因此它不会破坏父元素(抱歉)

答案 1 :(得分:8)

  

通过递增或递减delay(#)

来设置时间
$j('.done').delay(2000).fadeOut(200,function() {
    $(this).html('Your services have been updated').fadeIn(200);
});

答案 2 :(得分:2)

又一个解决方案:) 代码的作用是什么:

  1. 创建一个隐藏的&lt; span&gt;元件
  2. 使用'.add-comment'类将其附加到元素。
  3. 淡入新范围,
  4. 4.5秒之后新的跨度淡出并自行移除。

    jQuery('<span />',{ style:'display:none' })
        .html('Mesaj trimis...')
        .appendTo(jQuery('.add-comment'))
        .fadeIn('slow', 
            function(){
                var el = jQuery(this);
                setTimeout(function(){
                    el.fadeOut('slow',
                        function(){
                            jQuery(this).remove();
                        });
                }, 4500);
        }); 
    

答案 3 :(得分:1)

我知道它有点晚了,但是当我将其添加到全局功能中时,我想与大家分享我的解决方案。

function alert(elem,content,type,posi){
    
    //elem - element to be inserted
    //content - content of the alert box (based from bootstrap)
    //type -  alert type
    //posi - either append or prepend    
    
    //primary, secondary, success, warning, info, danger, light, dark
    if(type == undefined)
       type = 'info';

    elem.find('.glb-alert').remove();
    var a = '<div class="alert alert-danger col-md-12 glb-alert" role="alert" >'+content+'</div>';
    
    if(posi == undefined|| posi == 'prepend')
       elem.prepend(a).find('.glb-alert').delay(1200).fadeOut();
    else if(posi == 'append')
       elem.append(a).find('.glb-alert').delay(1200).fadeOut();

}

答案 4 :(得分:0)

我不确定这里的背景,但是它会起作用,比如说

<span id="special_message">Your services have been updated.</span>`

然后删除该特定ID'd标记?

答案 5 :(得分:0)

// a little jQuery plugin...
(function($){ 
    $.fn.timeout = function(ms, callback)
    {
        var self = this;
        setTimeout(function(){ callback.call(self); }, ms);
        return this;
    }
})(jQuery);

// ...and how to use it.
$("<span>Your services have been updated</span>")
    .appendTo('.done')
    .timeout(5000, function(){ this.remove(); });

答案 6 :(得分:0)

你可能会考虑Ben Alman的doTimeout插件 - http://benalman.com/projects/jquery-dotimeout-plugin/

$j('<span>Your services have been updated</span>')
    .appendTo('.done')
    .doTimeout( 5000, 'remove' );

答案 7 :(得分:0)

我喜欢这种在删除跨度之前使用短淡化的方法。它还会在追加之前删除先前的消息。

$("<span class='js_msg'>Your services have been updated</span>")
    .appendTo($j('.done').children("span.js_msg").remove().end())
    .each(function(){
        var self = $(this);
        setTimeout(function () {
            self.fadeOut(500,function(){
                self.remove();
            });
        }, 4500); 
   }
);