2
我正在嘗試製作一個「Etch-a-sketch」風格的div塊。當通過按鈕調用「擦除()」或「繪圖()」功能時,它們將工作幾秒鐘,或者僅通過.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);',但它不會刪除舊的懸停處理程序。所以當你將鼠標懸停在一個盒子上時,它會同時調用'變暗'和'變亮'。 – Barmar
完美的是,我在調用新的懸停處理程序之前,通過調用'$('。box')。off('mouseenter mouseleave');'解決了這個問題。謝謝! – wesree