2011-10-08 19 views
11

はこのような何かをすることが可能です:mousedownとif文が一致するかどうかを確認しますか?

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

私はそれが仕事だろうと思ったが、それはしません。

その他の詳細:私はマウスが特定DIVを離れたときにマウスボタンが押されているかどうかを確認しようとしているので、彼らのマウスは、div要素を残しながら、人はそうでない場合は、これを行うには、マウスボタンを押している場合それを行う。

+0

あなたは、彼らはどこでもページ上でそれを押した場合は、マウスの左ボタンを項目の上にダウンしている、またはかどうかを知りたいですか? – Ben

+0

関数/メソッドを起動したイベントを特定しようとしていますか? –

+0

質問が更新されました。はい、divの左ボタンが押されました。 –

答えて

19

私は考えることができる最も簡単な方法は、documentmousedownmouseupイベントリスナーをバインドし、それに応じて、グローバル変数を更新することです。要素の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"); 
    } 
}); 

ここには上記のworking exampleがあります。

+0

'$ .data()'を使用して 'down'変数を'#example'要素に付けるのは問題でしょうか? –

+0

いいえ、全く問題はありません。良い考え方、グローバル変数の使用を避けるために。 –

+0

これが複数の要素にある必要がある場合など、私は考えています。私が考えていたのはスピードだけでした。 –

1

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> 
0

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

+0

これは壊れたレコードのように聞こえますが、答えに実際のコードを投稿してください(これはSOのベストプラクティスとみなされます)。 ':)' –

5

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

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

マウスは、特定時点の下、特定の要素の上にだったかどうかの確認は、さまざまなイベントであり、この質問のタイトルでいかないと、私は加えるかもしれない変更する必要があります。 Googleが私をここに連れてきました。この答えは必然的に続くでしょう。

0

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

マウスは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'); 
}); 
関連する問題