Thanks for correcting me about that. Strange that they would decide to build the Sortable class in that way.
Dan On Jan 13, 2:49 pm, "T.J. Crowder" <[email protected]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---
