jquery - mousemove jQuery 后 MouseUp 不触发

标签 jquery mouseup

我在这里看到了一系列此类问题,并尝试将它们作为修复程序来实现,但似乎没有一个能够解决。

我在这里有一个 fiddle 设置 http://jsfiddle.net/OwenMelbz/RjYnM/

问题是,一旦拖动了该框,您必须先单击,然后它才会注册 mouseup 事件。

这是 js(抱歉有很多)

$(function() {
var pageID = document.location.pathname;
var defaultMarkup = document.documentElement.innerHTML;

$('.feedback-menu').attr('data-pageId', pageID);

$('.feedback-tab').click(function() {
    var state = $(this).attr('data-state');

    if (state == "closed") {
        $(this).attr('data-state', 'open');
        $('.feedback-menu').animate({
            'right': '-1px'
        });
        $('.feedback-tab').animate({
            'right': '100px'
        });
    }
    else {
        $(this).attr('data-state', 'closed');
        $('.feedback-menu').animate({
            'right': '-102px'
        });
        $('.feedback-tab').animate({
            'right': '-1px'
        });
    }
});

$('body').append("<div class='feedback-overlay' style='display:none;'></div>");

$('.feedback-btn').live('click', function() {
    setupCanvas();
});

var setupCanvas = function() {
    var overlayMarkup = "<div class='feedback-overlay'></div>";
    var docHeight = $(document).outerHeight();
    var docWidth = $(document).outerWidth();


    $('.feedback-overlay').css({
        'width': docWidth,
        'height': docHeight,
        'display': 'block'
    });

};

var startDrawing = function() {
    initDraw();
};

window.bugID = 0;
window.canvas = $('.feedback-overlay');

canvas.live('mousedown', function(e) {

    if(e.target != this){ return true; }

    bugID++;

    window.click_y = e.pageY;
    window.click_x = e.pageX;


    canvas.append('<div class="selection-box" id="bugID-' + bugID + '"></div>');

    window.bugBox = $('#bugID-' + bugID);

    bugBox.css({
        'top': click_y,
        'left': click_x,
        'width': 0,
        'height': 0
    });

    canvas.mousemove(function(e) {

        var move_x = e.pageX,
            move_y = e.pageY,
            width = Math.abs(move_x - click_x)-10,
            height = Math.abs(move_y - click_y)-10;

        bugBox.css({
            'width': width,
            'height': height
        });
        if (move_x < click_x) { //mouse moving left instead of right
            bugBox.css({
                'left': click_x - width
            });
        }
        if (move_y < click_y) { //mouse moving up instead of down
            bugBox.css({
                'top': click_y - height
            });
        }
        return false;
    });

    canvas.one('mouseup', function(e) {

        bugBox.draggable().resizable();
        if (bugBox.width() < 50 || bugBox.height() < 50) {
            bugBox.remove();
        }
        $().unbind();
        });

        return false;
});

});​

最佳答案

尝试在鼠标向上方法中使用$(this).unbind();:

canvas.one('mouseup', function(e) {
    console.log("a");
    bugBox.draggable().resizable();
    if (bugBox.width() < 50 || bugBox.height() < 50) {
        bugBox.remove();
    }
    $(this).unbind();
    });

更新的 fiddle :http://jsfiddle.net/johnkoer/RjYnM/5/

PS:Live 已被弃用,因此您应该转向使用 on

关于jquery - mousemove jQuery 后 MouseUp 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12630290/

相关文章:

javascript - 如何将 Å、Ä 和 Ö 放入 javascript 数组中,然后将其与 html 文本进行比较?

d3.js - 拖动强制布局会阻止其他 mouseup 监听器

javascript - 如果选中复选框,请按 Enter 键提交表单

jquery - 尝试更改动态创建的 <img> 的 data-zoom-image 属性

javascript - 在触摸设备上触发 mousedown 和 mouseup

jquery - 当您快速移动鼠标时,鼠标移动速度会变慢

delphi - 发生错误时在Delphi按钮组件中检测MouseUp

javascript - 在 mouseup 事件处理程序中取消单击事件

javascript - 动态添加输入字段并将数据保存到数据库

jquery - 如何在CSS导入的图像上应用CSS