У меня проблемы с отображением <div> через 2 секунды .. Моя проблема в том, что при наведении курсора на кнопку меню отображается без задержки, и я хочу задержку в 2 секунды ...
<div>
Попробуйте навести курсор: Mere på cabiweb, затем появится меню -> Вы можете увидеть его здесь
Код:
<script>$(document).ready(function() { $("#dropdown").hover(function(){ $(".drop-inner").delay(2000).show(); }); });</script>
Используйте время ожидания вместо .delay(), последнее только влияет на функции в очереди (например, эффекты):
.delay()
$("#dropdown").hover(function() { setTimeout(function() { $(".drop-inner").show(); }, 2000); });
Вы можете использовать функцию javascripts setTimeout, чтобы задержать выполнение:
setTimeout
<script> $(document).ready(function() { $("#dropdown").hover(function() { setTimeout(function() { $(".drop-inner").show() }, 2000); }); }); </script>
Я согласен с решением setTimeout, но ... что если пользователь уберет курсор мыши с #dropdown до истечения этих 2 секунд?
#dropdown
<script> $(document).ready(function() { $("#dropdown").hover(function(){ $.data(this, "timer", setTimeout($.proxy(function() { $(".drop-inner").show(); }, this), 2000)); }, function() { clearTimeout($.data(this, "timer")); $(".drop-inner").hide(); }); }); </script>
Проверьте пример на http://jsfiddle.net/vundicind/Lqq3h1xa/1/.
Не похоже, что .show() будет работать с .delay():
.show()
Добавленный в jQuery в версии 1.4, метод .delay () позволяет нам задерживать выполнение функций, которые следуют за ним в очереди. Его можно использовать со стандартной очередью эффектов или с пользовательской очередью. Только последующие события в очереди задерживаются; например, это не задержит формы без аргументов .show () или .hide (), которые не используют очередь эффектов.
Как указано в документации jQuery:
Метод .delay() лучше всего подходит для задержки между эффектами jQuery, находящимися в очереди.Поскольку он ограничен - он, например, не предлагает способ отменить задержку..delay() не является заменой встроенной функции JavaScript setTimeout, которая может быть более подходящей для определенных случаев использования.
Если бы вы использовали fadeIn или какой-либо другой эффект jQuery, ваш код работал бымежду эффектами.
fadeIn
То, что вы хотите сделать, это что-то вроде http://jsfiddle.net/BQhwd/
Я предположил, что вы хотели hide() и через 2 секунды.
hide()
Попробуйте эту функцию Анимировать
<script>$(document).ready(function() { $("#dropdown").hover(function(){ $(".drop-inner").animate({},2000,function(){ //animation complete }); }); });</script>
Использование setTimeout(expression, delay);
setTimeout(expression, delay);
$("#dropdown").hover(function(){ setTimeout(doSomething(), 2000); }); });
А потом в отдельной функции
<script> function doSomething() { $(".drop-inner").show(); } </script>