Задержка отпускания мыши - PullRequest
1 голос
/ 18 мая 2011

Есть простая проблема, которая, похоже, не решит HoverIntent.

У меня есть 2 элемента (скажем, кнопка и элемент div), 1 элемент является триггером для запуска расширения div, которое запускается событием mouseenter (это будет подходящим кандидатом для HoverIntent).

Однако, когда мышь покидает расширенный div в течение заданного промежутка времени, мне нужно, чтобы он снова сократился, однако, если они повторно введут div, он НЕ должен сжиматься. Большинство плагинов стиля hoverintent дали бы мне эту функциональность, но только для 1 элемента, и так как один элемент контролирует расширение (кнопка - mouseenter), а другой контролирует сжатие (div - mouseleave).

Я знаю, что мог бы написать некоторый код, чтобы просто сделать setTimeout для задержки на определенный период и убедиться, что мышь все еще находится за пределами области, но я бы предпочел использовать готовый плагин, если он существует.

Так кто-нибудь может посоветовать, если это существует?

- отредактировано -

Отредактировал вышеупомянутый вопрос, чтобы прояснить, что основная цель состоит в том, чтобы остановить его сокращение div, если мышь повторно входит в div в течение заданного промежутка времени, скажем, 2 секунды. Таким образом, элемент div должен расширяться при нажатии кнопки мыши, затем сокращаться, если указатель мыши покидает элемент div в течение> = 2 секунд.

1 Ответ

2 голосов
/ 18 мая 2011

Не как-то так?

$('.hover-items').each(function(idx, el){
  $(el).mouseenter(function() {
    $(this).slideDown(300);
    $('#target_div').unbind().mouseleave(function() {$(this).slideUp(300)});
  });
});

Открепление есть, чтобы вы не столкнулись с кучей событий, связанных с элементом.Просто перезагрузите и перейдите.


Добавлено для уточнения вопроса.

$('.hover-items').each(function(idx, el){
  $(el).mouseenter(function() {
    clearTimeout($(el).data('timer'));
    $('#target_div').slideDown(300)
      .unbind()
      .mouseleave(function() {
        var closure = function(){$('#target_div').slideUp(300)};
        $(el).data('timer', setTimeout(closure,2000));
    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...