将鼠标移动到mousedown函数中与jQuery绑定

col*_*ebb 6 javascript jquery javascript-events

我试图在鼠标左键停止时将mousemove事件绑定到div,并在释放时解除绑定.这段代码应该是相当自我解释的.

function handleMouseDown(e, sbar){
    if (e.button == 0){
        console.log(sbar); //firebug
        sbar.bind('mousemove', function(event){
            handleMouseMove(event, sbar);
        });
    }
}

function handleMouseUp(e, sbar){
    sbar.unbind('mousemove');       
}

function handleMouseMove(e, sbar){
    // not sure it this will work yet, but unimportant
    $(".position").html(e.pageX);
}

$(document).ready(function (){

    var statusbar = $(".statusbar");

    statusbar.mousedown(function(event){
        handleMouseDown(event, this);
    });

    statusbar.mouseup(function(event){
        handleMouseUp(event, this);
    });

});
Run Code Online (Sandbox Code Playgroud)

HTML的重要部分看起来像这样

<div id="main">
    <div class="statusbar">
        <p class="position"></p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Firebug说在handleMouseDown和handleMouseUp中的变量sbar上绑定方法是未定义的.firebug控制台打印出<div class="statusbar">注释// firebug的行.

我做错了,可能在绑定mousedown和mouseup时...但是什么?!我正在使用jQuery v1.4.2,如果有帮助的话?

Nic*_*ver 6

.bind()并且.unbind()是jQuery函数,所以你需要稍微调整,而不是这个:

    sbar.bind('mousemove', function(event){
        handleMouseMove(event, sbar);
    });
Run Code Online (Sandbox Code Playgroud)

你需要这个(把它包装成一个jQuery对象):

    $(sbar).bind('mousemove', function(event){
        handleMouseMove(event, sbar);
    });
Run Code Online (Sandbox Code Playgroud)

同样的.unbind():

$(sbar).unbind('mousemove');
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到只有那些修正的工作演示 :)