Hi Dan,
> You are confusing constructors with class definition
He's not, actually, though I can see why you would think that. When
you're creating a straight Sortable from script.aculo.us, you use
Sortable.create, not new Sortable.[1] It's just the way Sortable was
written, and it happens to use the same function name ("create") as
the function for defining classes in Class. Again, Sortable isn't a
"class" (more accurately, it's not a function used for initializing
prototypes). It's just a collection of properties (most of which are
functions).
[1] http://wiki.github.com/madrobby/scriptaculous/sortable
--
T.J. Crowder
tj / crowder software / com
Independent Software Engineer, consulting services available
On Jan 13, 7:53 pm, Dan <[email protected]> wrote:
> You are confusing constructors with class definition.Class.create() is
> for defining a new "Class" which will support inheritance. To
> construct an instance of a class you defined with var MyClass =
> Class.create(baseClass, { ... }) you construct it like you would any
> other object:
>
> var myClassInstance = new MyClass();
>
> So, this should work:
>
> // extend
> SortableLabelList = Class.create(Sortable, {
> // redefine onHover
> onHover: function($super, element, dropon, overlap) {
> $super();
> console.log(element);
> console.log(dropon);
> console.log(overlap);
> }
>
> });
>
> // create list
> var mySortableLabelList = new SortableLabelList("...");
>
> For more info, see the example in the documentation:
>
> http://prototypejs.org/api/class/create
>
> Dan
>
> On Jan 13, 6:31 am, Cyrus <[email protected]> wrote:
>
> > Ok, thanks.
>
> > Let me describe my actual problem:
>
> > I have a list with labels and checkboxes:
>
> > <ul id="list">
> > <li><label><input type="checkbox" /> My first checkbox</label></li>
> > <li><label><input type="checkbox" /> My second checkbox</label></li>
> > ...
> > </ul>
>
> > I wanted to have that list sortable. Very easy task with Sortable:
>
> > Sortable.create("list");
>
> > Works fine except one issue:
>
> > Safari and Firefox interpret the drag and drop as a click on the
> > label. Clicking on the label changes the status of the checkbox. There
> > must be a way to prevent this.
>
> > Do you have any ideas how to do this.
>
> > I used the Sortable callback onChange to save the checkbox status
> > before the drop. The other callback onUpdate is fired before the click
> > on the label takes effect. I would like to add another change listener
> > to the checkbox that only takes effect when onUpdate was fired.
>
> > On 13 Jan., 14:44, "T.J. Crowder" <[email protected]> wrote:
>
> > > Hi Cyrus,
>
> > > I don't know much about script.aculo.us, but looking at it
> > > (dragdrop.js), Sortable isn't a class (in the loose way we use that
> > > word in this classless prototypical language JavaScript), it's just an
> > > object with a bunch of functions assigned as properties. So you won't
> > > be able to extend it in this way. Perhaps someone who's done more
> > > with script.aculo.us can point you to a convenient way to achieve the
> > > result you're looking for.
>
> > > FWIW,
> > > --
> > > T.J. Crowder
> > > tj / crowder software / com
> > > Independent Software Engineer, consulting services available
>
> > > On Jan 13, 1:27 pm, Cyrus <[email protected]> wrote:
>
> > > > Hi,
>
> > > > I want to extend the Sortable class from the scriptaculous library.
> > > > Where is my mistake? It's telling me SortableLabelList.create doesn't
> > > > exist - I assumed it is inherited from Sortable.
>
> > > > // extend
> > > > SortableLabelList = Class.create(Sortable, {
> > > > // redefine onHover
> > > > onHover: function($super, element, dropon, overlap) {
> > > > $super();
> > > > console.log(element);
> > > > console.log(dropon);
> > > > console.log(overlap);
> > > > }
>
> > > > });
>
> > > > // create list
> > > > SortableLabelList.create("...");
>
>
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---