jQuery事件在鼠标松开时停止。

6
我正在尝试创建一个非常简单的应用程序,用户可以在鼠标按钮按下时使用所选颜色绘制到表格中,并且当鼠标松开时事件停止。
绘图很好用,唯一的问题是鼠标释放后事件没有停止。 我已经尝试过多种方法,但显然我做错了什么。还尝试了绑定和解绑事件,但也没起作用。
您可以在这里看到代码的一个版本: http://jsfiddle.net/mFzkG/8/ 非常感谢任何帮助!
3个回答

6

你需要做的就是绑定和解绑表格单元格上的事件。

 var currentColor;
    $('.colors').click(function() {
        $(this).fadeTo("fast", 0.40);
        currentColor = $(this).css("background-color");
        $('.colors').not(this).fadeTo("fast", 1);
    });


    $('table').mousedown(
    function() {
        $('td').bind('hover', function(){
            $(this).css(
            "background-color", currentColor
            );            
        });
        }).mouseup(function(){
            $('table td').unbind('hover');
            $('table').css(function(){
                return false;
        });
        });


    $("#reset").click(function() {
        $("td").css("background-color", "white")
    }
    );

这里是可工作的jsFiddle示例:http://jsfiddle.net/mFzkG/12/


2
为什么不这样做:
    var currentColor;
    var isMouseDown = false;       
    $('.colors').click(function() {
        $(this).fadeTo("fast", 0.40);
        currentColor = $(this).css("background-color");
        $('.colors').not(this).fadeTo("fast", 1);
    });
    $('td').mousedown(function() {        
        isMouseDown = true;
    });
    $('td').mouseup(function() {
        isMouseDown = false;
    });
    $('td').hover(function() {
        if (isMouseDown) {
            $(this).css("background-color", currentColor);    
        }
    });
    $("#reset").click(function() {
        $("td").css("background-color", "white")
    });

因此,我认为正确的实现方式是捕获mouseup / mousedown事件,在变量isMouseDown中保存状态,并在hover()函数中检查此变量。

2
您可以尝试使用以下 jQuery 代码:
$('table').mousedown(
function() {
    $('td').bind('mousedown mousemove', function(){
        $(this).css(
        "background-color", currentColor
        );            
    });
    });
$('table').mouseup(
    function() {
        $('td').unbind('mousedown mousemove');
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接