web-dev-qa-db-ja.com

ifステートメントでマウスダウンしているかどうかを確認しますか?

このようなことをすることは可能ですか?

if ($(this).mousedown() == true) {

それでうまくいくと思いましたが、うまくいきません。

追加の詳細:マウスが特定のDIVを離れたときにマウスボタンが押されているかどうかを確認しようとしているので、マウスが離れているときにマウスボタンを押し続けている場合div、これを実行します。それ以外の場合は実行します。

13
android.nick

私が考える最も簡単な方法は、mousedownおよびmouseupイベントリスナーをdocumentにバインドし、それに応じてグローバル変数を更新することです。要素のmouseoutイベントで、その変数の状態を確認し、適切に動作させることができます。 (注:これは、divの上でマウスが押されたかどうかを気にしないことを前提としています...その周りの質問を明確にする必要があります)。

var down = false;
$(document).mousedown(function() {
    down = true;
}).mouseup(function() {
    down = false;  
});
$("#example").mouseout(function() {
    if(down) {
        console.log("down");  
    } 
    else {
        console.log("up");   
    }
});

上記の 実例 です。

22
James Allardice

あなたの元の質問に答えて、はい、これは可能です。 mousedownイベントが要素に対して発生すると、要素がアクティブになり、疑似セレクター:activeで選択できます。 jQueryでは、何も選択されていない場合、空の配列が返されます。これを.length配列プロパティと組み合わせて使用​​し、アクティブな疑似セレクターをチェックに変えて、マウスが特定の要素の上にあるかどうかを確認できます。そう:

if ( $('#id:active').length ) {
  //do something
}

特定の時点でマウスが特定の要素の上に下がったかどうかを確認することは別のイベントであり、この質問のタイトルとは一致しないため、追加するかもしれません。グーグルは私をここに連れてきました、そしてこの答えは必然的に続く人々のためです。

6
Joshua Robinson

http://jsfiddle.net/5HrWF/

このようなもの?

コード:

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p>Press mouse and release here.</p>

<script>
    $("p").mouseup(function(){
      $(this).append('<span style="color:#F00;">Mouse up.</span>');
    }).mousedown(function(){
      $(this).append('<span style="color:#00F;">Mouse down.</span>');
    });

</script>

</body>
</html>
1
Dzoki

さて、私があなたに与えることができる最良のオプションはこれです: http://jsfiddle.net/qK8rr/2/

0
Ben

これをチェックしてください。 http://jsfiddle.net/b1Lzo60n/

Mousedownは、1秒後にマウスがまだダウンしているかどうかを確認するタイマーを開始します。

<button id="button">Press me</button>
<div id="log"></div>

コード:

var mousedown = false;
var mousedown_timer = '';
$('#button').mousedown(function(e) {
    mousedown = true;
    $('#log').text('mousedown...');
    mousedown_timer = setTimeout(function () {
        if(mousedown) {
            $('#log').text('1 second');
        }
    }, 1000);
}).mouseup(function(e) {
    mousedown = false;
    clearTimeout(mousedown_timer);
    $('#log').text('aborted');
});
0
Richard