2013-08-20 2 views
0

Я делаю приложение для календаря с помощью плагина jQuery FullCalendar, и я сделал вкладку слева от календаря с недельными от 1 до 6. Когда пользователь перетаскивает указатель мыши на одну из недель, календарь переключается на представление соответствующего вида. Это работает, но может быть неприятно для пользователя, если они делают это случайно. Таким образом, я хочу добавить задержку к функции, так что это произойдет только тогда, когда пользователь наведет ее на несколько сотен миллисекунд, так что это произойдет меньше, если пользователь не захочет этого.Как добавить задержку к функции мыши?

$('#week3').mouseover(function() { 
    $('#week3').css('color', 'white'); 
    $('#week3').css('background-color', '#6B8BA9'); 
    $('#week3').week3(); 

Я хочу добавить короткую задержку перед $('#week3').css('color', 'white');

+0

http://stackoverflow.com/questions/3661635/adding-delay-to-jquery-event-on-mouseover –

ответ

2

Если я правильно понять вас, то вы будете необходимо более полное решение, например, ниже

var mouse_monitor 

$('#week3').mouseover(function() { 
    mouse_monitor = setTimeout(function(){ 
    $('#week3').css('color', 'white'); 
    $('#week3').css('background-color', '#6B8BA9'); 
    $('#week3').week3(); 
    }, 1500) 
}); 

$('#week3').mouseout(function() { clearTimeout(mouse_monitor); } 

var mouse_monitor - это глобальная ссылка на вашу функцию таймаута. В другом сообщении отсутствует функция mouseout, которая гарантирует, что ваша функция mouseover не будет срабатывать, если пользователь переместит мышь с целевой цели до истечения срока действия setTimeout. Другие примеры все равно будут ссылаться на вашу функцию mouseover каждый раз, но с добавленной задержкой, поэтому они не будут работать для того, что, как я думаю, вы пытаетесь достичь.

-1

вы ищете setTimeout

+0

Вы могли бы хотя бы указать пример или ссылку на документ? что нибудь? – TecHunter

2

Используйте тайм-аут:

$('#week3').on({ 
    mouseenter: function() { 
     var that = this; 

     $(that).data('timer', 
      setTimeout(function() { 
       $(that).css('color', 'white'); 
      },1000) 
     ).css('background-color', '#6B8BA9').week3(); 
    }, 
    mouseleave: function() { 
     clearTimeout($(this).data('timer')); 
    } 
}); 
+0

Это не будет делать то, что задал ОП, поскольку он все равно вызовет функцию css, но теперь с задержкой. OP хочет предотвратить запуск функции, если время ожидания истекло. – Epiphany

+0

Дал @adeno вернувшийся момент для обновления своего кода к примеру, который теперь поддерживает вопрос OPs – Epiphany

+0

@Epiphany - спасибо, не прочитал вопрос достаточно тщательно! – adeneo

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