У меня есть следующий код.Преобразование обработчика событий в функцию
$('.crossOutAnswer').on('click', function(){
var crossStatus = $(this).hasClass('alreadyCrossOutAnswer'),
crossOutElement = $(this).attr('class').split(' ')[1].split('-')[1];
if(crossStatus == 1){
$(this).removeClass('alreadyCrossOutAnswer');
$('.res' + crossOutElement).removeClass('CrossedOutQuestion');
}else{
$(this).addClass('alreadyCrossOutAnswer');
$('.res' + crossOutElement).addClass('CrossedOutQuestion');
}
})
Это хорошо работает, но то, что я пытаюсь сделать, это преобразовать это в 2-х функций
- Первое сделать первое заявление
- Предпоследняя сделать заявление ELSE
Проблема в том, что когда я пытаюсь преобразовать их в 2 функции, функция $ (this) перестает работать (по причинам obvius больше нет триггера).
Кто-нибудь знает, как лучше всего использовать обработчики событий в функциях ?.
EDIT
Пожалуйста, обратите внимание, что я могу передать этот параметр без проблем, но переменные получить неопределенное то. Таким образом, решение должно решить эту проблему без повторного объявления в функции
обработчики событий уже являются функциями. Обратите внимание на 'function() {' – zzzzBov
, вы можете просто сохранить ссылку на это в переменной в начале обработчика кликов.var elem = $ (this); – user2079802
Обратите внимание, что полагаться на порядок классов в атрибуте 'class' невероятно легко ломается. Я бы предложил хранить любые требуемые метаданные в атрибуте 'data- *'. –