JQuery: всплывающее меню - очистка кода - держать меню открытым - PullRequest
2 голосов
/ 17 ноября 2010

Я искал SO, и этот вопрос, кажется, задавался несколько раз, но я не могу заставить его работать в моем примере.

Вот код для игры: http://jsfiddle.net/vol7ron/w8QsZ/2/

Я ищу что-то похожее на подсказку flowplayer , где:

  • есть триггер, который заставляет меню появляться при наведении
  • меню исчезает при выходе из триггера
  • если пользователь наводит курсор на меню (или всплывающую подсказку), всплывающее окно должно оставаться открытым

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

Я все еще новичок в jQuery и не уверен, где хранить сгенерированный timeoutID и где его вызывать.

Примечание: одно и то же меню будет использоваться для нескольких триггеров.


Обновление: Хорошо, у меня что-то работает: здесь
Может кто-нибудь, пожалуйста, помогите мне очистить его и сделать его более эффективным. Что еще более важно, я бы не хотел использовать глобальные переменные для timeoutID. Возможно, есть лучший способ сохранить его в объекте?

1 Ответ

0 голосов
/ 17 ноября 2010

Я недавно сделал что-то подобное.Что бы я сделал:

var timer = setTimeout(/*blah*/);
$('#my_selector').data('timer') = timer;

Я добавляю timeoutID в данные для этого элемента, а затем всякий раз, когда мне нужно что-то сделать с ним позже (clearTimeout), я могу просто взять его оттуда.

note Я использовал этот метод, и он работал для динамического количества элементов, что, как я думаю, вам нужно.Просто дайте мне знать, если вам нужно больше объяснений!

...