JQuery удалить .append через 5 секунд - PullRequest
10 голосов
/ 04 мая 2010

О, черт возьми, здесь сегодня много - ой

Ребята, лучший способ сделать это:

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

(что биты сделаны)

но затем удалить приложение, скажем, через 5 секунд, чтобы, если человек повторно отправил форму (разрешено), приложение не продолжило добавление текста? Т.е. обновлялось бы, как только «Ваши сервисы были обновлены», дважды читалось бы: «Ваши сервисы были обновлены, Ваши сервисы были обновлены», но я бы хотел, чтобы Ваши сервисы были обновлены, чтобы отображаться один раз

Ответы [ 7 ]

20 голосов
/ 04 мая 2010
(function (el) {
    setTimeout(function () {
        el.children().remove('span');
    }, 5000);
}($j('.done').append('<span>Your services have been updated</span>')));

Я знаю, это выглядит странно .. Я делаю это так для самодостаточности. Добавление немедленно выполняется, когда вызывается эта анонимная функция ... этот добавленный элемент затем сохраняется как el в этой анонимной области, которая сама удаляется при срабатывании timeout после 5000 мс.

Edit:

Я отредактировал функцию выше, чтобы она не уничтожала родительский элемент (извините за это)

8 голосов
/ 18 февраля 2011

установите время, увеличив или уменьшив delay(#)

$j('.done').delay(2000).fadeOut(200,function() {
    $(this).html('Your services have been updated').fadeIn(200);
});
2 голосов
/ 18 июня 2012

Еще одно решение :) Какой код делает:

  1. создает скрытый элемент
  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);
        }); 
    
0 голосов
/ 04 мая 2010

Мне нравится этот метод, который использует короткое затухание перед удалением диапазона. Он также удаляет предыдущие сообщения перед добавлением.

$("<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); 
   }
);
0 голосов
/ 04 мая 2010

Вы могли бы рассмотреть плагин Бена Алмана doTimeout - http://benalman.com/projects/jquery-dotimeout-plugin/

$j('<span>Your services have been updated</span>')
    .appendTo('.done')
    .doTimeout( 5000, 'remove' );
0 голосов
/ 04 мая 2010
// 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(); });
0 голосов
/ 04 мая 2010

Я не уверен в контексте здесь, но это будет работать, скажем,

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

, а затем удалить этот конкретный ID-тег?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...