ReferenceError: событие не определено error в Firefox

I'vrel mad # menuПоказать страницу для клиента, и я изначально работал в Chrome и забыл проверить, работает ли он в Firefox. Теперь у меня большая проблема, потому что вся страница основана на скрипте, который не работает в Firefox.

Он основан на всех «ссылках», #aboutPageкоторые приводят к скрытию и отображению правильной страницы. Я не понимаю, почему это не работает в Firefox.

Например страницы имеют идентификатор , и так далее. Все ссылки имеют этот код:<a class="menuOption" rel='#homePage' href="#">Velkommen</a> $(document).ready(function(){ //Main Navigation $('.menuOption').click(function(){ event.preventDefault(); var categories = $(this).attr('rel'); $('.pages').hide(); $(categories).fadeIn(); }); // HIDES and showes the right starting menu $('.all').hide(); $('.pizza').show(); // Hides and shows using rel tags in the buttons $('.menyCat').click(function(event){ event.preventDefault(); var categori = $(this).attr('rel'); $('.all').hide(); $(categori).fadeIn(); $('html,body').scrollTo(0, categori); }); });

$('.menuOption').click(function( event ){ // <---- "event" parameter here

    event.preventDefault();
    var categories = $(this).attr('rel');
    $('.pages').hide();
    $(categories).fadeIn();


});

Он отлично работает в Chrome и Safari.

Вот код:

event

javascript,jquery,html,firefox,

90

Ответов: 2


122

Вы неправильно заявляете (некоторые из) своих обработчиков кексов:

event

Вам нужно «щелкнуть», чтобы быть параметром для обработчиков. WebKit следует старому поведению в IE использовать глобальный символ для " $ ( '.menuOption' ). На ( 'нажмите' , функцию ( е ) { // <- "е" для события е . PreventDefault (); // теперь он будет работать var categories = $ ( this ). attr ( 'rel' ); $ ( '.pages' ). hide (); $ ( categories ). fadeIn (); }); », но Firefox этого не делает. Когда вы используете jQuery, эта библиотека нормализует поведение и гарантирует, что ваши обработчики e переданы параметром события.

редактировать a €» , чтобы уточнить: вы должны предоставить некоторое имя параметра; используя eventпроясняет , что вы собираетесь, но вы можете назвать это eили eventили что - нибудь еще.

Обратите также внимание на то, что причина, по которой вы, вероятно, должны использовать параметр, переданный из jQuery вместо «родной» (в Chrome и IE и Safari), состоит в том, что этот параметр (параметр) является оберткой jQuery вокруг собственного объекта события. Обертка - это то, что нормализует поведение событий в браузерах. Если вы используете глобальную версию, вы этого не получите.


48 ов

Это потому, что вы забыли eventвойти в clickфункцию:

Event

На стороне примечание eчаще используется в отличие от слова, eventпоскольку Eventэто глобальная переменная в большинстве браузеров.

JavaScript, JQuery, HTML, светлячок,
Похожие вопросы