2
div의 "Etch-a-Sketch"스타일 블록을 만들려고합니다. 버튼 누름을 통해 "erase()"또는 "draw()"함수가 호출되면 몇 초 동안 작동하거나 버튼을 두 번 누를 때까지 불투명도를 0.1만큼 증가 또는 감소시킵니다. 나는 한 번 누를 수 있고 다른 기능이 멈출 때까지 hovered 요소의 불투명도를 계속 늘리거나 줄이기 위해 노력하고있다. 내가 여기서 무엇을 놓치고 있니?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/
를 참조하십시오. 그것은 $ ('. box') .hover (lighten);'하지만 이전 호버 핸들러를 제거하지는 않습니다. 그래서 상자 위로 마우스를 가져 가면 '어둡게'와 '밝게'를 모두 호출합니다. – Barmar
퍼펙트, 새로운 호버 핸들러를 호출하기 전에 각 함수에서'$ ('. box'). off ('mouseenter mouseleave');를 호출하여이 문제를 해결했습니다. 고맙습니다! – wesree