このようなことをすることは可能ですか?
if ($(this).mousedown() == true) {
それでうまくいくと思いましたが、うまくいきません。
追加の詳細:マウスが特定のDIV
を離れたときにマウスボタンが押されているかどうかを確認しようとしているので、マウスが離れているときにマウスボタンを押し続けている場合div、これを実行します。それ以外の場合は実行します。
私が考える最も簡単な方法は、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");
}
});
上記の 実例 です。
あなたの元の質問に答えて、はい、これは可能です。 mousedownイベントが要素に対して発生すると、要素がアクティブになり、疑似セレクター:activeで選択できます。 jQueryでは、何も選択されていない場合、空の配列が返されます。これを.length配列プロパティと組み合わせて使用し、アクティブな疑似セレクターをチェックに変えて、マウスが特定の要素の上にあるかどうかを確認できます。そう:
if ( $('#id:active').length ) {
//do something
}
特定の時点でマウスが特定の要素の上に下がったかどうかを確認することは別のイベントであり、この質問のタイトルとは一致しないため、追加するかもしれません。グーグルは私をここに連れてきました、そしてこの答えは必然的に続く人々のためです。
このようなもの?
コード:
<!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>
さて、私があなたに与えることができる最良のオプションはこれです: http://jsfiddle.net/qK8rr/2/
これをチェックしてください。 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');
});