2015-06-21 3 views
-1

У меня есть событие jquery, которое я хочу встретить только через определенное время. По-видимому, delay работает только с анимационными событиями. Есть ли альтернатива delay Я могу использовать в этой ситуации?Как задержать событие jquery, которое не является анимацией?

$(document).ready(function() { 
    $(".opacity").delay(1000).css({"opacity": ".5",}).delay(1000).css({"opacity": "1",}); 
}); 
+0

Дубликат: http://stackoverflow.com/questions/5396119/using-jquery-delay-with-css – light

+1

Обратите внимание, что при использовании '.css()' не является "событие". – nnnnnn

ответ

2

Вы можете использовать setTimeout(), нет необходимости использовать функцию задержки

$(document).ready(function() { 
 
    setTimeout(function() { 
 
    $(".opacity").css({ 
 
     "opacity": ".5", 
 
    }); 
 
    setTimeout(function() { 
 
     $(".opacity").css({ 
 
     "opacity": "1", 
 
     }) 
 
    }, 1000) 
 
    }, 1000); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="opacity">opacity</div>

Если вы хотите использовать функцию delay, то вы можете добавить запись к задержке очередь с использованием .queue() Добавить код

$(document).ready(function() { 
 
    $(".opacity").delay(1000).queue(function(next) { 
 
    $(this).css({ 
 
     "opacity": ".5", 
 
    }) 
 
    next(); 
 
    }).delay(1000).queue(function(next) { 
 
    $(this).css({ 
 
     "opacity": 1, 
 
    }) 
 
    next(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="opacity">opacity</div>

Смежные вопросы