Как я могу исчезнуть div с помощью jQuery? - PullRequest
38 голосов
/ 11 февраля 2009

Есть ли способ затухания div через 5 секунд без использования функции setTimeOut?

Ответы [ 7 ]

117 голосов
/ 19 февраля 2010

все знают, что в jquery 1.4 теперь есть функция задержки, верно?

$('#div').delay(5000).fadeOut(400)

это то, как вы это делаете, без добавления каких-либо пользовательских функций или плагинов. это родной для jquery 1.4

29 голосов
/ 11 февраля 2009

Случай 1: если вы хотите запустить fadeOut через 5 секунд, используйте это:

jQuery.fn.delay = function(time,func){
    return this.each(function(){
        setTimeout(func,time);
    });
};

Затем используйте это так:

$('#div').delay(5000, function(){$(#div').fadeOut()})

Этого невозможно достичь без использования setTimeOut

Случай 2: если вы хотите, чтобы длительность fadeOut была 5 секунд, используйте это:

$('#div').fadeOut(5000)
20 голосов
/ 11 февраля 2009

Как насчет функции fadeOut () . Выглядело бы примерно так:

$("#myDiv").fadeOut(5000);
6 голосов
/ 30 декабря 2009

У меня просто была та же проблема, и, на мой взгляд, помеченный ответ на самом деле не удовлетворяет вопрос. Если указать это как

$("#myDiv").fadeOut(5000);

как указано, сам процесс затухания будет длиться 5 секунд, но не start через 5 секунд.

Так что я искал альтернативу, без необходимости включать другой плагин jQuery и т. Д. Самое простое решение, которое я нашел, было написать его следующим образом:

$("#myDiv").fadeTo(5000,1).fadeOut(1000);

Он использует эффект fadeTo и это как-то "хак". Я позволю fadeTo работать в течение 5 секунд, и пусть он исчезнет до 1 = 100% непрозрачности. Таким образом, пользователь не видит никаких изменений. После этого обычный вызов fadeOut с продолжительностью эффекта 1 секунда.

Полагаю, это решение довольно простое, поскольку оно не требует дополнительных плагинов и может быть записано в 1 строку.

Приветствие.

// EDIT:
Видимо, теперь есть возможность сделать что-то вроде этого:

$('#myDiv').delay(800).fadeOut(1000);

Вот еще несколько классных, полезных функций.

1 голос
/ 16 февраля 2009

// я использую этот плагин паузы, который я только что написал

$.fn.pause = function(duration) {
    $(this).animate({ dummy: 1 }, duration);
    return this;
};

Назовите это так:

$("#mainImage").pause(5000).fadeOut();

Примечание: обратный вызов не требуется.

1 голос
/ 11 февраля 2009

Не уверен, хотите ли вы, чтобы это заняло 5 секунд или началось через 5 секунд.

Для того, чтобы это заняло 5 секунд: функция исчезновения jQuery может быть использована в div, и она уменьшит непрозрачность элемента, пока не станет равной 0, а затем не отобразит div. Скорость замирания является параметром для функции.

http://docs.jquery.com/Effects/fadeOut#speedcallback

Чтобы запустить его через 5 секунд, вам понадобится какой-то таймер, который запускается, когда документ или окно готовы или когда div готов в зависимости от того, что вы хотите.

0 голосов
/ 11 февраля 2009

Предполагая, что вы имеете в виду «подождать пять секунд, а затем исчезнуть», я думаю, вам придется использовать плагин для принудительной задержки, например, этот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...