Ну, я занимался этой проблемой в течение последних 15 минут и наконец нашел НАСТОЯЩЕЕ решение.
В прошлом я закодировал выпадающие списки, хорошо, и мне было интересно, почему у меня сейчас возникает эта мерцающая проблема, когда я использовал твердый код и тайм-ауты.
Ну, я понял, что использовал неправильное событие Jquery. Не используйте событие jquery HOVER
, вместо этого используйте событие jquery mouseover
и mouseout
. Это решит проблемы, связанные с HOVER
.
Затем установите тайм-аут для сокрытия и, при отображении, сбросьте тайм-аут и, прежде чем скрывать, удалите тайм-аут. Установите этот параметр так долго, как вы хотите, чтобы меню отображалось при прокрутке.
Если вы используете тайм-аут при наведении, но мерцание по-прежнему наблюдается, обязательно используйте событие mouseover
.
$(".btn").mouseover(function() {
clearTimeout(this.timeout);
$(this).addClass("hover");
/* can add class, or manually set menu visible, i prefer using CSS class */
}).mouseout(function() {
clearTimeout(this.timeout);
/* clear timeout in case 2 mouseout events fire at same time */
this.timeout = setTimeout($.proxy(function() {
$(this).removeClass("hover");
}, 300));
});
Этот код должен быть повторно использован для ВСЕХ выпадающих на вашей странице.