JQuery удалить .append через 5 секунд
О, черт возьми, здесь много сегодня - oops
Люди, лучший способ сделать это:
$j('.done').append('Your services have been updated');
(эти биты выполнены)
но затем удалите добавление, скажем, через 5 секунд, чтобы, если человек повторно отправил форму (разрешено), приложение не продолжает добавлять текст? i.e обновляется после того, как "ваши службы были обновлены", дважды будет читаться "Обновлены ваши услуги. Обновлены ваши услуги", но я бы хотел, чтобы ваши службы были обновлены, чтобы показывать один раз
Ответы
Ответ 1
(function (el) {
setTimeout(function () {
el.children().remove('span');
}, 5000);
}($j('.done').append('<span>Your services have been updated</span>')));
Я знаю, что это выглядит странно. Я делаю это так, чтобы сдерживать себя. Приложение немедленно выполняется, когда эта анонимная функция вызывается... этот добавленный элемент затем сохраняется как el
в этой анонимной области, которая сама удаляется, когда timeout
срабатывает после 5000 мс.
Edit:
Я отредактировал функцию выше, чтобы она не уничтожала родительский элемент (извините за это)
Ответ 2
установите время, увеличивая или уменьшая значение delay(#)
$j('.done').delay(2000).fadeOut(200,function() {
$(this).html('Your services have been updated').fadeIn(200);
});
Ответ 3
Еще одно решение:)
Какой код:
- создает скрытый <span> Элемент
- добавляет его к элементу с классом .add-comment.
- Затухает в новом диапазоне,
-
после 4.5sec новый диапазон исчезает и удаляется.
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);
});
Ответ 4
Я не уверен в контексте здесь, но будет ли это работать, скажем
<span id="special_message">Your services have been updated.</span>`
а затем удалить этот тег ID'd позже?
Ответ 5
// 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
Вы можете рассмотреть плагин Ben Alman doTimeout - http://benalman.com/projects/jquery-dotimeout-plugin/
$j('<span>Your services have been updated</span>')
.appendTo('.done')
.doTimeout( 5000, 'remove' );
Ответ 7
Мне нравится этот метод, который использует короткое затухание перед удалением диапазона. Он также удаляет предыдущие сообщения перед добавлением.
$("<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);
}
);