.mouseup()和.mousedown()不使用.mousemove()

时间:2014-05-30 00:05:17

标签: javascript jquery

出于某种原因,我的.mouseup()事件未被调用。理想情况下,当用户激活mouseup()时,我想要console.log。

有人知道出了什么问题吗?

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 个答案:

答案 0 :(得分:2)

触发mousedown事件后,您正在将光圈移离光标。当鼠标按钮向上移动时,光标不再在圆圈上方,这意味着不会调用$('.circle').mouseup事件。

如果您将圆圈保留在鼠标下方,则会捕获mouseup事件。 (See this jsFiddle demo。)

答案 1 :(得分:1)

编辑:如果你的元素实际上是一个'圆圈',那么你的问题很可能就是@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);

你也可以查看日志,上面写着一个清晰的'up'。