2010-07-20 5 views
0

Je suis running into a problem with jQuery, donc je pense que j'ai trouvé une solution de contournement, mais besoin d'aide.jQuery - supprimer la fonction attachée à div

Je joins actuellement un cycle() diaporama à mon div comme ceci:

function startSlideshow() { 
    $('#slideshow').cycle({ some parameters }); 
} 

Quand je pause et reprendre ce diaporama, il présente un comportement bizarre, en raison de bugs dans le plugin cycle. Donc, mon idée de contournement est la suivante: détruire le cycle existant() et ensuite le recréer à la volée.

Je peux facilement le recréer en appelant à nouveau startSlideshow() ... mais comment puis-je tuer l'ancien cycle() qui est attaché à la div?

Je suppose que je suis à la recherche d'un moyen de "désactiver" ou "dissocier" complètement (et la méthode unbind() de jQuery n'est-ce pas).

Thanks-- Eric

+1

Aléatoire, avez-vous essayé d'appeler à nouveau cycle? – erjiang

+0

C'est une bonne idée - essayé - pas de chance. – Eric

Répondre

2

Utilisez les plug-ins détruisent la commande, il a été ajouté à version 2.80

$('#slideshow').cycle('destroy'); 
+0

Hmm. Curieusement, "détruire" semble le laisser dans un état étrange. Appeler 'détruire' et le redémarrer immédiatement ne le redémarre définitivement pas normalement. – Eric

+0

J'ai ajouté cette ligne après la commande destroy: $ ("# slideshow, #slideshow *"). Attr ("style", ""); Il supprime le style en ligne créé par cycle. – Martin

2

Vous pouvez utiliser $('#slideshow').cycle('destroy');

Mais êtes-vous sûr que le comportement bizarre est dû au plug-in de cycle ayant des bugs? et pas une mauvaise utilisation de celui-ci?

Comment mettre en pause et redémarrer le cycle?

+0

Salut Gaby - du mieux que je peux dire, il y a quelques problèmes avec l'index z et comment le cycle() gère les choses. Ma page est vraiment compliquée et je ne peux pas la reproduire en dehors de la page, mais je l'appelle normalement. Consultez le lien dans la première ligne de ma question (ci-dessus, en haut de cette page) pour voir l'autre question que j'ai posté, et vous pouvez voir comment j'appelle le code. Merci pour la réponse. – Eric

1

D'abord, vous supprimez la commande de cycle attachée. Ensuite, vous supprimez les styles en ligne créés par cycle:

$("#slideshow").cycle("destroy"); 
$("#slideshow, #slideshow *").removeAttr("style"); 
startSlideshow(); // recreate cycle slideshow 
Questions connexes