Связывание перемещения мыши в функции mousedown с помощью jQuery - PullRequest
6 голосов
/ 28 мая 2010

Я пытаюсь привязать событие 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 говорит, что методы связывания не определены в переменной sbar внутри handleMouseDown и handleMouseUp. Консоль firebug выводит <div class="statusbar"> для строки с комментариями // firebug .

Я делаю что-то не так, вероятно, при связывании mousedown и mouseup ... но что ?! Я использую jQuery v1.4.2, если это поможет?

1 Ответ

6 голосов
/ 28 мая 2010

.bind() и .unbind() - это функции jQuery, поэтому вам нужно немного изменить вместо этого:

    sbar.bind('mousemove', function(event){
        handleMouseMove(event, sbar);
    });

Вам нужно это (оберните его как объект jQuery):

    $(sbar).bind('mousemove', function(event){
        handleMouseMove(event, sbar);
    });

То же самое для .unbind():

$(sbar).unbind('mousemove');

Вы можете увидеть рабочую демонстрацию только с этими исправлениями здесь :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...