2009-07-07 11 views
1

Effet de Scriptaculous.Morph peut prendre une classe CSS et l'appliquer sur une période de temps. J'ai un div qui se dilate quand un bouton est cliqué, donc il utilise Effect.Morph pour appliquer une classe .expanded.Comment est-ce que j'utilise Effect.Morph de Scriptaculous pour désactiver une classe?

Maintenant, je voudrais supprimer la classe .expanded sur un second clic, en basculant le div fermé à nouveau. Comment puis-je invoquer Effect.Morph pour le faire?

+0

vous devez compléter le chemin ici, ou un lien sur la page scriptaculous. J'atteins le même problème et un chemin serait utile – Quamis

Répondre

1

La documentation dit ceci au sujet Effect.Morph:

Cet effet modifie les propriétés CSS d'un élément.

Alors vous devez appeler à nouveau, en spécifiant les propriétés CSS initiales de sorte que votre div peut revenir à son état initial, par exemple (encore une fois, des docs):

<div id="morph_demo" style="background:#cccccc; width:100px; height:100px;"></div> 
<ul> 
    <li><a href="#" onclick="$('morph_demo').morph('background:#00ff00; width:300px;'); return false;">Click me for a demo!</a></li> 
    <li><a href="#" onclick="$('morph_demo').morph('background:#cccccc; width:100px;'); return false;" >Reset the demo!</a></li> 
</ul> 

Alternativement, vous pouvez utiliser Prototype à remove the class altogether:

$('yourDivId').removeClassName('yourClassId'); 

Scriptaculous dépend de Prototype.js, au cas où vous ne le saviez pas, de sorte que la deuxième option est viable.

Enfin, vous pouvez set the style à rien (je pense):

$('yourDivId').setStyle(null); 
+1

Ouais, on dirait que la réponse est que ça ne peut pas être fait avec un effet Morph (sans avoir à répéter tous les styles de l'élément sans appliquer la classe, ce qui n'est pas très sec). J'ai étendu Effect.Morph pour faire ce que je veux, donc, je vais pousser un patch jusqu'à Scriptaculous. – Peeja

+0

Avez-vous déjà utilisé ce patch? Comment le faites-vous fonctionner? J'ai essayé d'appeler $ ('element_id'). Morph ('class_name') comme si c'était toggle, mais il semble toujours ajouter le nom de la classe. – audiodude

+0

Je n'avais pas. J'ai envoyé une demande de tirage maintenant: https://github.com/madrobby/scriptaculous/pull/26 – Peeja