Как удалить элемент после 3-х задержек? - PullRequest
2 голосов
/ 05 января 2011
$('#gallerie ul li:eq(1)').animate({opacity: 1}, 1250).remove(); //results in instand remove
$('#gallerie ul li:eq(1)').delay(3000).remove(); //instant remove
$('#gallerie ul li:eq(1)').remove().delay(3000); //that didnt work either

Как я могу удалить объект через 3 секунды вместо мгновенного удаления?

Ответы [ 6 ]

8 голосов
/ 05 января 2011
setTimeout(function(){
     $('#gallerie ul li:eq(1)').remove();
},3000);
5 голосов
/ 05 января 2011

Если вы хотите сделать это .delay способом, вам нужно включить .queue:

$("#gallerie ul li:eq(1)").delay(3000).queue(function() {
    $(this).remove();
});

Демо: http://jsfiddle.net/karim79/MT4Yd/

2 голосов
/ 05 января 2011

Страница руководства гласит (на самом деле довольно четко):

"Добавленный в jQuery в версии 1.4, метод .delay() позволяет нам задерживать выполнение функций, следующих за ним в очереди. Он может использоваться со стандартной очередью эффектов или с пользовательской очередью. Только последующие события в очередь задерживается, например, это не будет задерживать формы без аргументов .show() или .hide(), которые не используют очередь эффектов. "

remove() не будет использовать очередь эффектов.

Вы можете использовать jQuery fadeOut(), hide() ... или в качестве полного эквивалента вашей первоначальной попытке базовую функцию Javascript setTimeout.

Надеюсь, это поможет.

2 голосов
/ 05 января 2011

Метод delay используется для анимации, поэтому задерживаются только те методы анимации, которые объединены в цепочку после него. Метод delay помещает задержку в очередь анимации, он не задерживает выполнение кода.

Чтобы удалить элементы после анимации, вы можете использовать метод обратного вызова. Пример:

$('#gallerie ul li:eq(1)').fadeOut(3000, function() {
  $(this).remove();
});
0 голосов
/ 05 января 2011

как насчет этого:

$('#gallerie ul li:eq(1)').animate({opacity: 1}, 1250,function(){
     $(this).remove();
});
0 голосов
/ 05 января 2011

вы можете сделать:

setTimeout(function(){
      $('#gallerie ul li:eq(1)').remove();
},3000);
...