2015-01-24 2 views
0

Я использую jquery-discovery.js для всплывающего окна, которое исчезает после нажатия ссылки. То, что я хотел бы сделать сейчас, - это задержка с момента, когда ссылка будет нажата до начала замирания. Я определил фрагмент кода, который вызывает увядание, но я не могу заставить задержку работать. Куда бы я включил таймаут?JQuery Modal Fade Delay

if(options.animation == "fade") { 
       modalBG.delay(options.animationspeed).fadeOut(options.animationspeed); 
       modal.animate({ 
        "opacity" : 0 
       }, options.animationspeed, function() { 
        modal.css({'opacity' : 1, 'visibility' : 'hidden', 'top' : topMeasure}); 
        unlockModal(); 
       });     
      } 
+0

Обычно вы называете это, создавая время js. Таким образом, таймер удерживает тайм-аут, а затем выполняет функцию лямбда, которая вызывает вышеуказанное. – arkascha

+0

Я немного запутался, потому что есть 2 объекта с модальным именем. 'modalBG' и' модальный'. Не могли бы вы объяснить, что это такое? Какой объект вы хотите оживить? Этот фрагмент кода, который вы отправили, является вашим кодом или из jquery-open? – Vitox

+0

Забудьте вопрос выше. Не могли бы вы показать строку, где вы говорите? Что-то вроде: $ ('# myModal'). Показать (... – Vitox

ответ

0
modalBG.delay(3000) 

даст вам задержку 3сок

0

В общем виде, чтобы установить задержку перед любым вызовом метода вы можете использовать стандартный метод JavaScript setTimeout.

setTimeout(function() 
{ 
    $('#MyModal').fadeOut(); 
}, 2000); 

Приведенный выше код вызовет вызов fadeOut jQuery с задержкой в ​​2 секунды.


Update

После взглянуть на JQuery Reveal-х документации, я думаю, что я понял:

setTimeout(function() 
{ 
    $('#MyModal').trigger('reveal:close'); 
}, 2000); 


Кроме того, это важно помните, что Reveal является плагином jQuery , который может не работать с delay(), поскольку он выполняет другие операции, которые не могут находиться в очереди эффектов, поэтому они не будут отложены.

От JQuery API Документация

Он может быть использован с очередью стандартных эффектов или с пользовательской очереди. Задерживаются только последующие события в очереди; например, это не будет задерживать не-аргументы форм .Show() или .hide(), которые не используют очереди эффектов

А также:

В .delay() метод лучше всего задерживать эффекты jQuery в очереди. Поскольку он ограничен - он, например, не предлагает способ отмены задержки. .delay() не является заменой встроенной функции setTimeout для JavaScript, что может быть более подходящим для определенных случаев использования.