2010-07-01 17 views
7

Mi chiedo se è in qualche modo possibile utilizzare la funzione stop() (di solito uso su animate()) con hide() o show().jQuery usando stop() con hide()/show()?

se mi passa il mouse rapidamente più volte nel corso di un div che utilizza show() per visualizzare alcuni subdivs lo spettacolo-animazione ripete più e più volte. La funzione stop() interromperà tale comportamento.

Tuttavia non ho idea di come sia possibile utilizzare la funzione stop() con hide() o show().

È possibile?

Grazie
saluti Matt

risposta

8

È necessario impostare una durata per la mostra/nascondi effetto:

.hide('slow') 

Dopo di che si è in grado di utilizzare .stop() e .stop(true,true)

stop ([clearQueue], [jumpToEnd])

clearQueue Un booleano che indica se rimuovere anche l'animazione in coda. Il valore predefinito è falso.

jumpToEnd booleano che indica se per completare immediatamente l'animazione corrente. Il valore predefinito è falso.

altro approccio sarebbe di aggiungere un ritardo come

.delay(500).hide(1); 

http://api.jquery.com/delay/

.delay (durata, [queueName]) durata Un numero intero che indica il numero di millisecondi per ritardare l'esecuzione del prossimo elemento in coda.

QueueName Una stringa contenente il nome della coda. Il valore predefinito è fx, la coda effetti standard.

+0

si può anche usare '.Stop (1,1)' proprio uguale a '.Stop (true, true)' – Reigel

1

Si potrebbe chiamare la funzione di arresto sull'elemento che l'animazione è stata invitata. Inoltre, si desidera impostare il parametro clearqueue in modo da non arrestare solo la prima forma dell'animazione, ma qualsiasi animazione in coda in attesa di esecuzione.

http://api.jquery.com/stop/