2012-02-23 2 views
1

У меня есть некоторые элементы, нажатые на странице через ajax. Как я могу заставить их исчезнуть через 3 секунды после их создания, например, с эффектом угасания?JQuery auto-fading

html помещается внешней библиотекой jQuery, выполняющей множественную загрузку (http://blueimp.github.com/jQuery-File-Upload/). После того, как файл будет загружен, плагин тянет это на странице:

<div class="template-download fade"> 
    FileName ... 
    Errors... 
</div> 
+1

мы можем увидеть некоторый код, о том, как и какие элементы вы толкая на страницу? Простой 'setTimeout (function() {$ (" # pushedDiv "). FadeOut();}, 3000);' после того, как вы 'append', элементы всегда будут делать трюк ... – balexandre

+0

Например, простой div, подобный этому :

yeah
. Хорошо для решения с setTimeout, но он не будет слишком голоден? –

ответ

2

Использование функции обратного вызова плагина. Например:

$('#fileupload').bind('fileuploadalways', function (e, data) { 
    setTimeout(function(){$('div.template-download.fade').fadeOut()}, 3000); 
}); 

... должно вызвать FADEOUT на элемент 3000 миллисекунд после возвращения AJAX, независимо от того, что результат был.

Обратные вызовы необходимы для любых функций AJAX. Обычно ваш код работает как можно быстрее, не дожидаясь, когда ваша функция или метод AJAX вернет любые данные. Обратный вызов запускается только после того, как он возвращает результат, и конкретные вызовы могут быть вызваны для конкретных результатов.

Другие обратные вызовы существуют только для успешной загрузки, неудачной загрузки и т. Д. Прочитайте https://github.com/blueimp/jQuery-File-Upload/wiki/Options и прокрутите страницу вниз до «параметров обратного вызова».

+0

Я не могу получить доступ к обратному сообщению, потому что вызов Ajax выполняется плагином. –

+0

Это не работает, вот мой код: setTimeout (function() {$ ('. Fade'). FadeOut()}, 3000); Я положил его на любой вызов load/ajax. –

+0

@YvanL. Если вы не можете получить обратный вызов, вы, вероятно, застряли. Там могут быть решения, но без вашего кода мы понятия не имеем, что предложить. Если вы хотите получить более конкретные предложения, отправьте некоторый фактический код. – Blazemonger

1
$("div").html("example example").delay(3000).fadeOut();​ 

вот почему мы используем jquery.

EDIT для @ mblase75 комментарий,

$("div").load('ajax.html').delay(3000).fadeOut(); 
+0

OP сказал, что он использовал AJAX для загрузки нового контента. – Blazemonger

+0

@ mblase75, я просто пишу метод, ничего не меняется в ajax. – ocanal

0

Это должно идти

setTimeout(fadeout(),3000); 

function fadeout(){ 

$("yourid").fadeOut(); 

} 
+0

Синтаксис метода setTimeout должен быть: setTimeout ("fadeout()", 3000); Кстати, это не работает для меня;) –