#javascript #html #jquery #html5
На сей раз возник вопрос к var. Как заставить переменную перезаписывать своё значение
при каждом новом вызове функции?
Весь код функции прилагается.
function tablecell(){
var st = $(this).attr('id');
console.log(st);
if($(this).is('.disabled')){
}
else{
$('.questionBg').css({'display':'flex'});
function answer(){
if ($(this).is('#true')){
$(this).css({'background':'#83c849'}).css({'color':'#fff'});
$('.answer').addClass('disabled');
$('.disabled').off('click', answer);
$('.teamSelection').css({'display':'flex'});
$('.selectTeam').click(function(){
$(close);
alert(st);
$("#"+st).addClass('disabled');
if($(this).is('.selectTeam1')){
$("#"+st).children('.question').css({'display':'none'});
$("#"+st).children('.team1').css({'display':'block'});
}
else{
$("#"+st).children('.question').css({'display':'none'});
$("#"+st).children('.team2').css({'display':'block'});
}
});
}
else{
$(this).css({'background':'#e03a3a'}).css({'color':'#fff'});
$('.answer').addClass('disabled');
$('.disabled').off('click', answer);
setTimeout(close, 1000);
}
}
}
$('.answer').click(answer);
};
Вызов производится извне:
$(document).ready(function(){
$('.tablecell').click(tablecell);
});
У меня ощущение, что функция банально не завершается, но новое значение в консоль
при повторном вызове выводится.
Однако, alert с каждым разом повторно выводит предыдущие значения. Что делать - не
пойму. Массивом прописать?
Какого цвета этот блок?
Варианты ответа:
- Синий
- Красный
- Серый
- Белый
Начать!
Ответы
Ответ 1
Что делать Не назначать обработчики событий внутри других обработчиков событий. Каждый раз, когда выполняется функция tablecell, Вы добавляете новый обработчик события click всем элементам с классом "answer". По щелчку на такой элемент выполняются все накопившиеся обработчики. (function(){ var st; function answer(){ ... } function tablecell(){ st = $(this).attr('id'); console.log(st); if($(this).is('.disabled')){ } else { $('.questionBg').css({'display':'flex'}); } } $(document).on('click', '.tablecell', tablecell); $(document).on('click', '.answer', answer); })();
Комментариев нет:
Отправить комментарий