JQuery всплывающее меню и кнопка возврата - PullRequest
1 голос
/ 03 октября 2010

У меня есть этот код, но когда я нажимаю кнопку «Назад» в браузере, меню все еще отображается, и его класс по-прежнему «show»

$("#courses > a,#masterclasses > a,#the-team > a").click(function (e) {                                                            
    e.preventDefault();
});
$('#courses > a,#courses-nav').hover(function(){
    $('#courses-nav').addClass('show');
    $('#courses > a').css('color','#43b2b0');
},function(){
    $('#courses-nav').removeClass('show');
    if ($('body').hasClass('courses')) {
        $('#courses > a').css('color','#43b2b0');
        }
        else {
        $('#courses > a').css('color','#000');
    }
}); 

Я попытался добавить это ... $ ('# курсы-нав, # мастерклассы-нав, #-команда-нав') removeClass ( 'шоу').... но это не решает проблему.

Спасибо за любую помощь в устранении этой проблемы.

C

1 Ответ

2 голосов
/ 03 октября 2010

Да, когда вы используете кнопки «назад» и «вперед», современные браузеры фактически не перезагружают страницу. Вместо этого они сохраняют старую страницу, скрывают ее при выходе и повторно отображают при повторном входе на страницу. Это приводит к гораздо более быстрой навигации назад и вперед и означает, что страница будет в том же состоянии, когда вы вернетесь к ней, как это было, когда вы ее покинули. О bfcache в Firefox.

Вы можете перехватить событие pageshow и использовать его для отмены промежуточных операций, не доходя до полного разрыва bfcache (что обычно делается путем добавления обработчика события unload).

Для парения лучше использовать обычный CSS :hover, а не скрипты. Это только IE6, с которым это не работает. Здесь снова всплывающие меню имеют довольно сложные проблемы с юзабилити и доступностью, будь то с помощью скрипта или CSS.

...