この状況に関するstackoverflowに関するいくつかの回答を読んだが、解決策はありません。クリックとマウスとの区別を区別する
ユーザーが要素をクリックするか、jQueryを使用してその要素をマウスで押さえているかによって、さまざまなことをしようとしています。
これは可能ですか?
この状況に関するstackoverflowに関するいくつかの回答を読んだが、解決策はありません。クリックとマウスとの区別を区別する
ユーザーが要素をクリックするか、jQueryを使用してその要素をマウスで押さえているかによって、さまざまなことをしようとしています。
これは可能ですか?
はここ
setTimeout()
)のタイマーを持って呼び出されたときにfalseに設定する関数を作る(マウスダウンにダウンカウント開始)のmouseup上に戻って変数を設定します。 はここでそれがうまくいくかもしれない方法を示しjsfiddleです:http://jsfiddle.net/zRr4s/3/
良い仕事@daveyfaherty、あなたは本当に私を助けました。 – eyalewin
onMouseDownは、左または右(または中央)のいずれかを押すとトリガーされます。同様に、ボタンが離されるとonMouseUpが起動します。 onMouseDownはオブジェクト上でマウスをクリックしてから離してもトリガーしますが、onMouseUpはボタンをクリックしたまま他の場所に置いたままトリガーするとトリガーし、オブジェクトの上にリリースします。
onClickは、同じオブジェクトでマウスの左ボタンを押したときにのみトリガされます。あなたが注文を気にする場合、同じオブジェクトに3つのイベントが設定されていれば、それはonMouseDown、onMouseUp、そしてonClickです。それぞれはたとえ一度だけトリガーすべきです。
詳細:
はい、マウスクリックとマウスアップの時間が十分長い場合はonClickを起動しないようにします。イベントのタイムスタンプとその種類の作品を比較しています。 – aperture
ここでは、両方のクリックをサポートし、保持しているソリューションです:
// Timeout, started on mousedown, triggers the beginning of a hold
var holdStarter = null;
// Milliseconds to wait before recognizing a hold
var holdDelay = 500;
// Indicates the user is currently holding the mouse down
var holdActive = false;
// MouseDown
function onMouseDown(){
// Do not take any immediate action - just set the holdStarter
// to wait for the predetermined delay, and then begin a hold
holdStarter = setTimeout(function() {
holdStarter = null;
holdActive = true;
// begin hold-only operation here, if desired
}, holdDelay);
}
// MouseUp
function onMouseUp(){
// If the mouse is released immediately (i.e., a click), before the
// holdStarter runs, then cancel the holdStarter and do the click
if (holdStarter) {
clearTimeout(holdStarter);
// run click-only operation here
}
// Otherwise, if the mouse was being held, end the hold
else if (holdActive) {
holdActive = false;
// end hold-only operation here, if desired
}
}
// Optional add-on: if mouse moves out, then release hold
function onMouseOut(){
onMouseUp();
}
ここでデモです:もともとdaveyfahertyのソリューションに基づいてhttp://jsfiddle.net/M7hT8/1/
。 私はこの質問がしばらく前からあることを知っていますが、私は検索でこれを見つけた人のために私のソリューションを共有しています。
//last mouse coordinate
var mouseX = 0;
//epsilon interval
var mouseEps = 10;
function mouseDownHandler(e) {
e.preventDefault();
mouseX = e.clientX;
};
function mouseUpHandler(e) {
e.preventDefault();
if (Math.abs((mouseX - e.clientX)) < mouseEps) {
clickHandler(e);
}
};
function clickHandler(e) {
};
マウスダウンでグローバル変数を設定@MrOBrian、偽/ trueにするMouseUp、その変数のクリック方法でチェックしていますが、その下のマウスのタイマーを使用して試みることができる – aperture
常に最初のmouseup発射し、変数を設定しますか適切なイベントをバインドして、ボタンが一定時間以上押されたかどうかを確認します。 – MrOBrian