Wie füge ich eine Verzögerung für das Schweben eines Elements in angularjs hinzu?

8

Ich habe ein Element:

%Vor%

Hier ist das JS:

%Vor%

Und ich möchte eine Verzögerung von 500 ms für das Hover-Ereignis einstellen können.

Ich hatte bereits eine Antwort auf diese Frage, aber ich kann sie nicht für weitere acht Stunden posten. Ich werde wiederkommen!

    
Tj Gienger 19.07.2014, 01:07
quelle

7 Antworten

11

Wie bereits erwähnt, habe ich dem moonenter-Ereignis einen Timer hinzugefügt.

%Vor%

Das Problem, das ich hatte, war, dass das Popup immer noch eine halbe Sekunde später auftreten würde, wenn ich am Element vorbei blättern würde und der Mauszeiger darauf klickt. Ich möchte in der Lage sein, an einem Objekt vorbeizuscrollen, ohne dass das Popup zufällig passiert.

Durch das Setzen des Timeouts in eine Variable konnte ich das Timeout abbrechen. Was ich bei einer Maus mache lasse Ereignis, um sicherzustellen, dass Benutzer nicht versehentlich das Popup auslösen.

%Vor%

Hier ist eine Geige für den Fall, dass jemand es in Aktion sehen möchte: jsfiddle

    
Tj Gienger 19.07.2014, 14:55
quelle
8

Ich empfehle die Verwendung von CSS-Übergängen und angular-animate:

JS

%Vor%

CSS

%Vor%

HTML

%Vor%

Demo Plunker

    
pixelbits 19.07.2014 01:20
quelle
3
___ qstnhdr ___ Wie füge ich eine Verzögerung für das Schweben eines Elements in angularjs hinzu? ___ answer24841656 ___

Wie bereits erwähnt, habe ich dem moonenter-Ereignis einen Timer hinzugefügt.

%Vor%

Das Problem, das ich hatte, war, dass das Popup immer noch eine halbe Sekunde später auftreten würde, wenn ich am Element vorbei blättern würde und der Mauszeiger darauf klickt. Ich möchte in der Lage sein, an einem Objekt vorbeizuscrollen, ohne dass das Popup zufällig passiert.

Durch das Setzen des Timeouts in eine Variable konnte ich das Timeout abbrechen. Was ich bei einer Maus mache lasse Ereignis, um sicherzustellen, dass Benutzer nicht versehentlich das Popup auslösen.

%Vor%

Hier ist eine Geige für den Fall, dass jemand es in Aktion sehen möchte: jsfiddle

    
___ qstntxt ___

Ich habe ein Element:

%Vor%

Hier ist das JS:

%Vor%

Und ich möchte eine Verzögerung von 500 ms für das Hover-Ereignis einstellen können.

Ich hatte bereits eine Antwort auf diese Frage, aber ich kann sie nicht für weitere acht Stunden posten. Ich werde wiederkommen!

    
___ answer24835844 ___

Ich empfehle die Verwendung von CSS-Übergängen und angular-animate:

JS

%Vor%

CSS

%Vor%

HTML

%Vor%

Demo Plunker

    
___ answer27540763 ___

Hallo, dort oben, gute Antwort Wollte nur hinzufügen, vergessen Sie nicht, Ihren Timer abzubrechen, wenn Sie benötigt, wenn Sie schweben und es immer noch nicht ausgelöst oder wenn Sie die Direktive zerstören

%Vor%     
___ answer26520594 ___

Ich habe eine einfache Direktive dafür geschrieben.

%Vor%

Beispielverwendung (sc-hover-delay ist optional):

%Vor%

Hier ist ein Plünderer: Ссылка

    
___ answer24835797 ___

delayedMouseEnter Ruft eine Funktion auf oder führt nach einer bestimmten Verzögerung ein Code-Snippet aus .

%Vor%

Oder der Angular %code% Service:

%Vor%     
___ answer30085877 ___

Danke, dass Sie diese Frage gestellt haben, denn dieses Beispiel hat mir geholfen, zu verstehen, wie $ timeout viel besser funktioniert als die Dokumentation von AngularJS. Allerdings habe ich die Operation etwas an der richtigen Antwort verbessert und wollte sie hier teilen.

Sie müssen nie eine leere Var namens Timer erstellen. Tatsächlich verbraucht dies Speicher, den Sie nicht benötigen. Sie haben eine Variable und zwei Funktionen, um mit einer einzelnen Operation umzugehen.

Also habe ich eine einzige Funktion namens 'toggleHover' erstellt, die ein boolesches Argument namens 'bool' akzeptiert. Dann bestimmt eine if / else-Anweisung, welche $ timeout-Funktion Sie ausführen müssen.

AngularJS im Controller

%Vor%

HTML / ANSICHT

%Vor%

BEISPIEL

Ссылка

    
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123angularjs ___ Für Fragen zu AngularJS (1.x), dem Open-Source-JavaScript-Framework. Verwenden Sie dieses Tag NICHT für Angular 2 oder höhere Versionen. Verwenden Sie stattdessen das [eckige] -Tag. ___ tag123hoverintent ___ hoverIntnet ist ein sehr kleines jQuery-Plugin, das hilft, die Absicht des Benutzers zu bestimmen. Wenn Sie den Hover von jQuery im Hintergrund verwenden, erhalten Sie eine viel flexiblere Kontrolle über den "Hover". ___ tag123hover ___ Hover bezieht sich auf die Aktion des Platzierens des Mauszeigers über ein bestimmtes Element. Hover kann sich auch auf ein Ereignis beziehen, bei dem ein Benutzer auf einem berührungsempfindlichen Gerät ein bestimmtes Element berührt. ___
Shomz 19.07.2014 01:18
quelle
3

window.setTimeout Ruft eine Funktion auf oder führt nach einer bestimmten Verzögerung ein Code-Snippet aus .

%Vor%

Oder der Angular $timeout Service:

%Vor%     
Rahil Wazir 19.07.2014 01:12
quelle
3

Ich habe eine einfache Direktive dafür geschrieben.

%Vor%

Beispielverwendung (sc-hover-delay ist optional):

%Vor%

Hier ist ein Plünderer: Ссылка

    
Lars335 23.10.2014 02:59
quelle
2

Danke, dass Sie diese Frage gestellt haben, denn dieses Beispiel hat mir geholfen, zu verstehen, wie $ timeout viel besser funktioniert als die Dokumentation von AngularJS. Allerdings habe ich die Operation etwas an der richtigen Antwort verbessert und wollte sie hier teilen.

Sie müssen nie eine leere Var namens Timer erstellen. Tatsächlich verbraucht dies Speicher, den Sie nicht benötigen. Sie haben eine Variable und zwei Funktionen, um mit einer einzelnen Operation umzugehen.

Also habe ich eine einzige Funktion namens 'toggleHover' erstellt, die ein boolesches Argument namens 'bool' akzeptiert. Dann bestimmt eine if / else-Anweisung, welche $ timeout-Funktion Sie ausführen müssen.

AngularJS im Controller

%Vor%

HTML / ANSICHT

%Vor%

BEISPIEL

Ссылка

    
Dmidify 06.05.2015 19:30
quelle
1

Hallo, dort oben, gute Antwort Wollte nur hinzufügen, vergessen Sie nicht, Ihren Timer abzubrechen, wenn Sie benötigt, wenn Sie schweben und es immer noch nicht ausgelöst oder wenn Sie die Direktive zerstören

%Vor%     
yonia 18.12.2014 06:54
quelle