Javascript 使用jQuery在mousedown函数中绑定mousemove

Javascript 使用jQuery在mousedown函数中绑定mousemove,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我试图在左mousebutton关闭时将mousemove事件绑定到div,并在释放时解除绑定。这段代码应该是相当自我解释的 function handleMouseDown(e, sbar){ if (e.button == 0){ console.log(sbar); //firebug sbar.bind('mousemove', function(event){ handleMouseMove(event, sbar);

我试图在左mousebutton关闭时将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);
    });

});
HTML的重要部分如下所示

<div id="main">
    <div class="statusbar">
        <p class="position"></p>
    </div>
</div>

Firebug说绑定方法在handleMouseDown和handleMouseUp中的变量sbar上没有定义。 firebug控制台打印出注释行//firebug的

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

并且是jQuery函数,因此您需要稍微调整一下,而不是这样:

    sbar.bind('mousemove', function(event){
        handleMouseMove(event, sbar);
    });
您需要这样做(将其包装为jQuery对象):

同样适用于:


:)

Ahh-我明白了。非常感谢@colinjameswebb-这是一个优化版本,无需传递
sbar
,使用
this
(当前上下文)对您有利:)
    $(sbar).bind('mousemove', function(event){
        handleMouseMove(event, sbar);
    });
$(sbar).unbind('mousemove');