В настоящее время я работаю над приложением карточной игры, используя комбинацию PHP и JavaScript. Однако я столкнулся с проблемой обработки событий. Функциональность, которую я хочу, заключается в том, чтобы игрок мог щелкнуть по карте, после чего появится сообщение с инструкцией снова щелкнуть карту, чтобы перевернуть ее. Вот моя основная установка:Правильный способ структурирования Обработка событий JQuery
function flipPlayerCard($card) {
gameAlert('Click the card again if you would like to flip it.');
$compareCard = $card;
$('body').off().on('click', '.card', function() {
if ($compareCard.attr('id') == $(this).attr('id')) {
console.log('Flipping card');
//Call the flip player card function
}
else {
gameAlert('');
resetBinds();
}
});
}
function resetBinds() {
$('body').off().find('.player').eq(turn).find('.card').add('.draw_pile .card').add('.discard_pile .card').on('click', function(event) {
event.stopPropagation();
cardSwitch($(this));
});
}
function cardSwitch($this) {
$('body').off();
var type = $this.parent().parent().attr('class');
switch (type) {
case 'player':
flipPlayerCard($this);
break;
case 'discard_pile':
takeDiscardPileCard();
break;
case 'draw_pile':
flipDrawPileCard();
break;
}
}
$(document).ready(function() {
resetBinds();
});
На первом нажмите он работает отлично, но на второй клик ничего не записывается в консоль. Я знаю, что должен быть лучший способ справиться с этими связанными событиями, подобными этому. Что мне не хватает? Любая помощь приветствуется.
'функция cardSwitch ($ это) {' это новый ... приняв это в качестве параметра. – gdoron
OP должен сгенерировать флип. Не мог сопротивляться. – harpo
Я уверен, что '.off()' function ** требует ** аргумента, чтобы сообщить, какие обработчики удалить. – Pointy