О, черт возьми здесь много сегодня - ой
Люди, лучший способ сделать это:
$j('.done').append('Your services have been updated');
(это сделанные биты)
но затем удалите добавление после того, как скажите 5 секунд так, чтобы, если человек повторно отправляет, форма (позволенная) добавление, не продолжала добавлять текст? т.е. обновленный однажды "Ваши сервисы были обновлены", дважды считает "Ваши сервисы, были обновлены, Ваши сервисы были обновлены", но я только захочу Ваши сервисы, были обновлены для показа однажды
Я не уверен в контексте здесь, но сработает ли он, скажем,
<span id="special_message">Your services have been updated.</span>`
, а затем удалить этот конкретный тег ID?
{{ 1}}(function (el) {
setTimeout(function () {
el.children().remove('span');
}, 5000);
}($j('.done').append('<span>Your services have been updated</span>')));
Я знаю, что это выглядит странно. Я делаю это таким образом для самообекорения. Добавление выполняется немедленно, когда эта анонимная функция вызывается... этот добавленный элемент затем сохраняется как el
в этой анонимной области, которая сама удаляется, когда timeout
срабатывает через 5000 мс.
Edit:
Я отредактировал функцию выше, чтобы она не уничтожала родительский элемент (извините за это)
Вы могли бы рассмотреть плагин doTimeout Бена Алмана - http://benalman.com/projects/jquery-dotimeout-plugin/
$j('<span>Your services have been updated</span>')
.appendTo('.done')
.doTimeout( 5000, 'remove' );
// 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(); });
Мне нравится этот метод, который использует короткое затухание перед удалением диапазона. Он также удаляет предыдущие сообщения перед добавлением.
$("<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);
}
);