Прихойте дів через кілька секунд


123

Мені було цікаво, як в jquery я можу приховати діву через кілька секунд? Наприклад, повідомлення Gmail.

Я намагався з усіх сил, але не можу працювати.


1
Просто ховається досить добре, чи тобі потрібно, щоб вона зів’яла?
Joel Coehoorn

Відповіді:


247

Це приховає діву через 1 секунду (1000 мілісекунд).

setTimeout(function() {
    $('#mydiv').fadeOut('fast');
}, 1000); // <-- time in milliseconds
#mydiv{
    width: 100px;
    height: 100px;
    background: #000;
    color: #fff;
    text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">myDiv</div>

Якщо ви хочете просто сховатися, не затухаючи, використовуйте hide().


2
і ви дуже красиво побили божевільного Джоеля Когурна одним пострілом! :)
Крегокс

3
@James, напевно, немає різниці в кінцевому результаті, але я вважаю, що реалізація використання .delay()є більш "рідною" та елегантною jQuery.
Пол Т. Раукін

ви можете замінити .fadeOut('fast')з .hide()миттєвим шкура справ.
Раптор

90

Ви можете спробувати .delay()

$(".formSentMsg").delay(3200).fadeOut(300);

виклику div встановіть час затримки в мілісекундах і встановіть властивість, яку ви хочете змінити, в цьому випадку я використовував .fadeOut (), щоб він міг бути анімований, але ви можете також використовувати .hide ().

http://api.jquery.com/delay/


7
Це краще, тому що мені не потрібно використовувати код setTimeoutand, який легше читати.
Marek Bar

12

jquery пропонує різноманітні методи приховати дів тимчасово, які не потребують налаштування та пізніше очищення або скидання таймерів інтервалу або інших обробників подій. Ось кілька прикладів.

Чиста прихованість, затримка на одну секунду

// hide in one second
$('#mydiv').delay(1000).hide(0); 

Чиста хованка, без зволікань

// hide immediately
$('#mydiv').delay(0).hide(0); 

Анімована хованка

// start hide in one second, take 1/2 second for animated hide effect
$('#mydiv').delay(1000).hide(500); 

вицвітати

// start fade out in one second, take 300ms to fade
$('#mydiv').delay(1000).fadeOut(300); 

Крім того, методи можуть приймати ім'я черги або функцію як другий параметр (залежно від способу). Документацію для всіх вищезгаданих дзвінків та інших пов'язаних дзвінків можна знайти тут: https://api.jquery.com/category/effects/


10

Існує дійсно простий спосіб зробити це.

Проблема полягає в тому, що .delay впливає лише на анімації, тому те, що вам потрібно зробити, це змусити змусити .hide () діяти як анімація, надаючи їй тривалість.

$("#whatever").delay().hide(1);

Надаючи йому приємну коротку тривалість, вона здається миттєвою, як і звичайна функція .Hide.



3

Використання таймера jQuery також дозволить вам мати ім’я, пов'язане з таймерами, приєднаними до об'єкта. Таким чином, ви можете прикріпити кілька об'єктів до об'єкта і зупинити будь-який з них.

$("#myid").oneTime(1000, "mytimer1" function() {
  $("#something").hide();
}).oneTime(2000, "mytimer2" function() {
  $("#somethingelse").show();  
});

$("#myid").stopTime("mytimer2");

Функція eval (та її родичі, Function, setTimeout і setInterval) забезпечують доступ до компілятора JavaScript. Це іноді необхідно, але в більшості випадків це свідчить про наявність вкрай поганого кодування. Функція eval є найбільш зловживаною функцією JavaScript.

http://www.jslint.com/lint.html


2

Напевно, найпростіший спосіб - використовувати плагін таймерів. http://plugins.jquery.com/project/timers, а потім викликайте щось подібне

$(this).oneTime(1000, function() {
    $("#something").hide();
  });

1
Чи є якась вагома причина використовувати плагін таймерів через setTimeout або setInterval?
витрачається

2
Я б сказав, що завантажувати та приєднувати плагін jquery менш просто, ніж просто використовувати setTimeout.
Натан Рідлі

1
Я не думаю, що це неодмінно погано, але оскільки рідко я коли-небудь використовую таймери у своєму коді, якщо цей плагін навколо (читайте: додатковий код, роздуття) протягом цих кількох разів не перевищує вартості. Якщо ви писали багато коду, який був потрібний для використання таймерів, і використовували jQuery, я можу зрозуміти, чому цей плагін був би дуже корисним для збереження синтаксису jQuery ...
Jason Bunting


0
<script>
      $(function() {
      $(".hide-it").hide(7000);
    });              
</script>

<div id="hide-it">myDiv</div>

Будь ласка, не публікуйте лише код як відповідь, але також надайте пояснення, що робить ваш код та як він вирішує проблему. Відповіді з поясненням, як правило, є більш корисними та кращою якістю, і, швидше за все, залучають репутацію.
Марк Ротвевель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.