.mouseup () и .mousedown () не работают с .mousemove ()

0

По какой-то причине мое .mouseup() не вызывается. В идеале я хотел бы console.log, когда пользователь активирует mouseup().

Кто-нибудь знает, что не так?

http://jsfiddle.net/cBh3B/

$('.circle').mousedown(function () {
    console.log('mousedone');
    $(document).mousemove(function (e) {
        console.log(e.pageY);
        $('.circle').offset({
            left: e.pageX,
            top: e.pageY
        });
    });
});

$('.circle').mouseup(function () {
    console.log('up');
});

var p = $('.square').position();
console.log(p.left);
Теги:

2 ответа

2

Вы перемещаете круг от курсора после mousedown события mousedown. К тому моменту, когда кнопка мыши будет перемещена вверх, курсор больше не будет по кругу, а это означает, что событие $('.circle').mouseup не будет вызываться.

Если вы держите круг под мышью, событие mouseup будет захвачено. (См. Эту демонстрацию jsFiddle.)

1

EDIT: Если ваш элемент на самом деле является "кругом", ваша проблема, скорее всего, будет вызвана @Peter Olson.

Я рекомендую вам попробовать использовать

$('.example').on('mouseup', function(){ console.log('mouseup'); });

Вот пример: http://jsfiddle.net/Grimbode/qsE56/

Похоже, что ваши события называются.

$('.circle').on('mousedown',function () {
    console.log('mousedone');
    $(document).on('mousemove', function (e) {
        console.log(e.pageY);
        $('.circle').offset({
            left: e.pageX,
            top: e.pageY
        });
    });
});

$('.circle').on('mouseup', function () {
    console.log('up');
});

var p = $('.square').position();
console.log(p.left);

Вы также можете проверить журнал, на нем написано "вверх".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню