12

ボタンが押されている間、マウスの位置を継続的に取得するにはどうすればよいですか?

私はできることを知っています:

<element onclick="functionName(event)"></element>
<script>
function functionName(e){
e.pageX
e.pageY
//do stuff
}
</script>

onmousedown イベントを使用できることはわかっていますが、ボタンを押したままにしておくと、どうすれば継続的に位置を取得できますか?

奇妙なことに、私はどこを見てもこれを見つけることができませんでした。

4

2 に答える 2

23

とにかく、イベントプロパティが等しいmousemoveかどうかをチェックしてイベントを使用することをお勧めします(つまり、マウスの左ボタンが押された場合):which1

$("element").on("mousemove", function(e) {
    if (e.which == 1) {
        console.log(e.pageX + " / " + e.pageY);
    }
});​

デモ: http://jsfiddle.net/HBZBQ/

于 2012-07-01T13:42:04.003 に答える
6

ここに JSFiddle があります。マウス ボタンの状態を変数に格納する必要があります。

jQuery:

$(document).ready(function() {
    $(document).mousedown(function() {
        $(this).data('mousedown', true);
    });
    $(document).mouseup(function() {
        $(this).data('mousedown', false);
    });

    $(document).mousemove(function(e) {
        if($(this).data('mousedown')) {
            $('body').text('X: ' + e.pageX + ', Y: ' + e.pageY);
        }
    });
});​

ここでは、マウス ボタンのアップまたはダウンの状態をdocumentusingに格納しています$(document).data()。グローバル変数を使用することもできましたが、この方法で格納すると、コードが少しきれいになります。

$.mousemove()関数では、マウスがダウンしている場合にのみ、必要なことを行います。上記のコードでは、単にマウスの位置を出力しています。

于 2012-07-01T13:43:20.983 に答える