Ich habe eine horizontale Bildlauf von Filmen. Benutzer sollte in der Lage ziehen das Element horizontal scrollen sowie klicken Sie auf auf jeden Film, um einen Video-Player zu öffnen.jQuery - Wie Timing von ziehen und klicken Ereignisse, teilen Sie die gleichen UI-Element?
Das Problem ist, sowohl Ziehen und Klicken auf das gleiche Ereignis Zuhörer hören:
-
:
- Wenn ein Benutzer schnell auf einen Film klickt (Maus innerhalb von 1 Sekunde), wird er als Klick- und Klick-Callba festgelegt ck wird gefeuert.
- Wenn der Benutzer die Maus zieht (Maustaste gedrückt halten, dann länger als 1 Sekunde gedrückt halten, dann weiter ziehen), klicken Sie auf Callback wird abgebrochen und der Callback wird gezogen.
mouse down
mouse up
(und
mouse move
zum Ziehen)
ich dies erreichen wollen
Mein Code (unten) macht die Scroll verhalten sich wie diese, , die ich nicht wollen:
- Nach Benutzer gibt die Scroll-Ziehen, klicken Sie auf Ereignis ein Film geöffnet fired macht.
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
})
Sie eine Flagge auf der Maus nach unten gesetzt, und ungesetzt es, wenn d ragging/mouseup. Wenn Sie die Maustaste gedrückt halten, überprüfen Sie die Markierung und entscheiden Sie, ob das Klickverhalten aktiviert werden soll oder nicht. –
@eran Das Problem ist, klicken Sie auf Ereignis ist im Grunde die Maus nach unten und mouse up Ereignis. Wenn ein Nutzer auf einen Film klickt, hört das Ereignis auf: Klick, Mausklick, Mausereignisse. Selbst 'e.preventDefault()' kann nicht verhindern, dass ein Klick auf all diese Ereignisse zugreift. –
@eran wenn ich die Maustaste loslasse, entscheide ich mich nicht zu klicken, dann kann der Benutzer nie auf einen Film klicken. –