JavaScript-событие функции ES6 arrow не прошло в Firefox [дубликат]

Что делает should_equal? Это логическое возвращение True или False? В этом случае это написано:

item.price == 19.99

У вас нет учета вкуса, но обычный разработчик python не сказал бы, что это менее читаемо, чем ваша версия.

Установил ли should_equal какой-то валидатор? (почему валидатор должен быть ограничен одним значением? Почему бы просто не установить значение и не обновить его после этого?) Если вы хотите валидатор, это никогда не сможет работать в любом случае, так как вы предлагаете изменить либо определенное целое число, либо все целые числа. (Валидатор, который требует 18.99 равным 19.99, всегда терпит неудачу.) Вместо этого вы могли бы записать его следующим образом:

item.price_should_equal(19.99)

или это:

item.should_equal('price', 19.99)

и определить соответствующие методы класса или суперклассов.

90
задан Adrian Mann 13 January 2016 в 16:19
поделиться

2 ответа

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

$('.menuOption').on('click', function (e) { // <-- the "e" for event

    e.preventDefault(); // now it'll work

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

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

48
ответ дан Mark Pieszak - DevHelp.Online 27 August 2018 в 20:41
поделиться

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

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

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


});

Для обработчиков вам нужно «событие». WebKit следует за старым поведением IE использования глобального символа для «события», но Firefox этого не делает. Когда вы используете jQuery, эта библиотека нормализует поведение и гарантирует, что обработчики событий передаются параметром события.

изменить & mdash; для уточнения: вы должны указать имя параметра ; используя event, дает понять, что вы намереваетесь, но вы можете называть его e или cupcake или что-то еще.

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

122
ответ дан Pointy 27 August 2018 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: