私は映画の水平スクロールを持っています。ユーザーはになります。要素を水平方向にスクロールし、をクリックすると、各ムービー上でがビデオプレーヤーを開きます。jQuery - イベントをドラッグしてクリックするタイミングを注文し、同じUI要素を共有する方法は?
問題は、ドラッグ&クリックの両方が同じイベントリスナーに耳を傾ける、次のとおりです。(ドラッグするためとmouse move
) mouse down
mouse up
私はこれを達成したい:
-
を
- ユーザーがムービーをすばやくクリックすると(マウスが1秒以内に上下に)、クリックと判断され、コールバがクリックされますckは発砲される。
- ユーザーがドラッグすると(マウスを押し下げたまま1秒以上マウスを保持してからドラッグすると)、コールバックがキャンセルされ、ドラッグコールバックが発生します。
私のコード(怒鳴る)スクロールがこのように振る舞うなり、私はをたくない:
- ユーザーがスクロールをドラッグし終わると、イベントは映画のオープンを作っ発射されるクリックしてください。
Htmlの
<ul class="scroll">
<li><a href="linkToMovie"></a></li>
<li><a href="linkToMovie"></a></li>
<ul>
JS
var $scroll = (".scroll");
var $movie = $scroll.children($("movie")
$scroll.on("mousedown", function(e) {
e.preventDefault()
$(this).on("mousemove", function() {
//drag horizontally
});
});
$scroll.on("mouseup", function(){
//...
});
$movie.on("click", function(){
//open movie
})
不快感/マウスアップ。マウスを上に置いて、フラグをチェックし、クリック動作を実行するかどうかを決定します。 –
@eran問題は、クリックイベントは基本的にマウスダウンとマウスアップイベントです。ユーザーがムービーをクリックすると、イベントはクリック、マウス・ダウン、マウス・アップ・イベントを聞きます。 'e.preventDefault()'でも、クリックがこれらすべてのイベントにアクセスするのを止めることはできません。 –
@eranもし私がクリック行動をしないと決めたら、ユーザーは決して映画をクリックすることができません。 –