Что делает 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)
и определить соответствующие методы класса или суперклассов.
Это потому, что вы забыли пройти в 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
является глобальной переменной в большинстве браузеров.
Вы неправильно объявляете (некоторые из) обработчиков событий:
$('.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 вокруг собственного объекта события. Обертка - это то, что нормализует поведение событий в браузерах. Если вы используете глобальную версию, вы этого не получите.