Ok, so I can't seem to win...  It appears to me that Effect.Morph is
full of bugs.

I have been trying my hardest to get morph to work with padding-- and
it doesn't behave properly...

document.observe('dom:loaded', function() {

      $$('input.sort_children').invoke('observe', 'click', function()
{
         var css = {};
         var children = this.next('div').immediateDescendants(); //
this selects an array of divs

// toggle the button state
         if (this.getValue().toLowerCase() == "sort") {
            this.value = "done";
            css.padding = "0px";
         }
         else {
            this.value = "sort";
            css.padding = "50px";
         }

         children.each(function(e){
            new Effect.Morph(e, {style: css, duration: .5});
         });

       });
});

when I click my sort button, I immediately see it change to "done" but
nothing happens..  I click it again.. it goes back to "sort".. nothing
happens.. I click it a 3rd time, and suddenly the padding morph
happens.

I then tried using css = 'classname1' and css = 'classname2'...  Then
when I clicked it, it would set the padding to 0 properly and morph
it... but when i'd click it a 2nd time, it would do something weird
that look like it set the padding to 5 and then it dropped down to 0
again...

...  I also was trying to set the display properties from 'inline-
block' to 'block'.. and that did not work at all either when I was
using my css = {} hash/object...  When I tried using it with
classnames, similarly to padding, it only seemed to partially work.

Then I changed my css = {} hash/object to just deal with borders:

         if (this.getValue().toLowerCase() == "sort") {
            this.value = "done";
            css.border = "1px solid red";
         }
         else {
            this.value = "sort";
            css.border = "5px dotted blue";
         }

... this works fine.. so, it appears that Morph can't handle certain
css properties.

.. Oh and of course, if I change my:

 children.each(function(e){
            new Effect.Morph(e, {style: css, duration: .5});
         });

to:


children.invoke('setStyle', css);

then all of my changes are exactly as they should be-- but I really
wanted to have some animation.

-patrick
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to