Я сделал страницу для клиента, и сначала я работал в Chrome и забыл проверить, работает ли он в Firefox. Теперь у меня большая проблема, потому что вся страница основана на скрипте, который не работает в Firefox.
Он основан на всех «ссылках», rel
которые ведут к скрытию и отображению нужной страницы. Я не понимаю, почему это не работает в Firefox.
Например страницы имеют идентификатор #menuPage
, #aboutPage
и так далее. Все ссылки имеют этот код:
<a class="menuOption" rel='#homePage' href="#">Velkommen</a>
Он отлично работает в Chrome и Safari.
Вот код:
$(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);
});
});
javascript
jquery
html
firefox
Монс Дальстрём
источник
источник
Ответы:
Вы неправильно объявляете (некоторые из) обработчики событий:
Вам нужно, чтобы "событие" было параметром для обработчиков. WebKit следует старому поведению IE по использованию глобального символа для «события», но Firefox этого не делает. Когда вы используете jQuery, эта библиотека нормализует поведение и гарантирует, что вашим обработчикам событий будет передан параметр события.
править - уточнить: вы должны предоставить некоторое имя параметра; используя
event
проясняет то , что вы собираетесь, но вы можете назвать этоe
илиcupcake
или что - нибудь еще.Также обратите внимание, что причина, по которой вам, вероятно, следует использовать параметр, переданный из jQuery, вместо «собственного» (в Chrome, IE и Safari), заключается в том, что этот параметр (параметр) является оболочкой jQuery вокруг собственного объекта события. Оболочка - это то, что нормализует поведение событий в браузерах. Если вы используете глобальную версию, вы этого не получите.
источник
Это происходит потому , что вы забыли передать
event
вclick
функцию:Кстати,
e
чаще используется вместо этого слова,event
такEvent
как в большинстве браузеров это глобальная переменная.источник
e
из jQuery! @Pointy