JQuery удаляет .append после 5 секунд

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

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

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

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

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

10
задан RussP 4 May 2010 в 14:03
поделиться

5 ответов

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

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

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

{{ 1}}
0
ответ дан 3 December 2019 в 15:05
поделиться
(function (el) {
    setTimeout(function () {
        el.children().remove('span');
    }, 5000);
}($j('.done').append('<span>Your services have been updated</span>')));

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

Edit:

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

20
ответ дан 3 December 2019 в 15:05
поделиться

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

$j('<span>Your services have been updated</span>')
    .appendTo('.done')
    .doTimeout( 5000, 'remove' );
0
ответ дан 3 December 2019 в 15:05
поделиться
// 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
ответ дан 3 December 2019 в 15:05
поделиться

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

$("<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
ответ дан 3 December 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: