2

私はjqueryボックスをドラッグしようとしていますが、問題は、非常に速くドラッグすると「mousemove」がマウスよりも遅く動き、マウスがドラッグ#boxから出るとmousemoveが動かないことです。これを修正するにはどうすればよいですか? :

function position(div,x,y) {

    x = x-100;
    y = y-100;

    $(div).css({'left':x, 'top':y});

}


$(document).ready(function() {

    var check = false;

    $("#box").mousedown(function() {

        check = true;

        $("#box").mousemove(function (e) {

            if(check != false) {

                position("#box", e.pageX, e.pageY);

            }

        });

    }).mouseup(function() {

        check = false;

    });

});
4

1 に答える 1

1

あまりにも多くのシステム リソースを使用しているため、速度が低下しています。したがって、システムの使用を減らす方法を見つける必要があります。

mousemove をドキュメントに委譲することで、実行速度が少し速くなります。マウスを非常に速く動かすと、まだ少し遅れますが、改善されています. コードは次のとおりです。

$(document).ready(function() {
    var check = false,
        box = $("#box")[0];

    $(box).mousedown(function() {
        check = true;
    }).mouseup(function() {
        check = false;
    });

    $(document).mousemove(function(e) {
        if(check) {
            position(box, e.pageX, e.pageY);
        }   
    });
});
于 2011-10-08T17:48:35.040 に答える