Я пытаюсь создать блок стилей «Etch-a-sketch». Когда функции «erase()» или «draw()» вызываются с помощью нажатия кнопки, они будут работать в течение нескольких секунд или только увеличивают или уменьшают непрозрачность на .1, пока я не дважды нажму кнопку. Я пытаюсь сделать это так, чтобы его можно было нажимать один раз и продолжать постоянно увеличивать/уменьшать непрозрачность на зависающих элементах до тех пор, пока другая функция не будет остановлена. Что мне здесь не хватает?jQuery - нажать кнопку два раза или больше, чтобы сделать функцию.
function erase(){
$('.erase').toggleClass('draw').toggleClass('erase');
$('.box').hover(lighten);
}
function draw(){
$('.erase').toggleClass('erase').toggleClass('draw');
$('.box').hover(darken);
}
function darken(){
var currentDarkness = +$(this).css('opacity');
if (currentDarkness <= 1) currentDarkness += .10;
$(this).css({"opacity": currentDarkness});
}
function lighten(){
var currentDarkness = +$(this).css('opacity');
if (currentDarkness >= 0) currentDarkness -= .10;
$(this).css({"opacity": currentDarkness});
}
$('.erase').off('click').on('click', erase);
$('.draw').off('click').on('click', draw);
Полный код - https://jsfiddle.net/weslex/ftwaw27e/
Проблема не в коде вы в курсе, что это в 'функции erase'. Это '$ ('. Box'). Hover (lighten);', но он не удаляет старый обработчик hover. Поэтому, когда вы наводите курсор на поле, он вызывает «темный» и «светлый». – Barmar
Отлично, я решил это, вызвав '$ ('. Box'). Off ('mouseenter mouseleave');' в каждой функции до вызова нового обработчика hover. Спасибо! – wesree