I don't think you can do that, but something like the following might
do the trick for you:
var Menu = Class.create({
initialize: function(id) {
this.id = id;
this.items = [];
},
addItem: function(item) {
this.items.push(item);
return this;
},
toElement: function() {
var menu = new Element("ul", { id: this.id, className: "menu" });
this.items.map(Element.insert.curry(menu));
return menu;
}
});
You could have a similar MenuItem class that encapsulates the logic of
your menu items (event handling and whatnot), whose toElement returns
a <li>.
Then, since your Menu class responds to "toElement" you can just pass
it to Element.insert/update, etc to add it to the DOM.
var fileMenu = new Menu("file");
fileMenu.addItem(...);
$("menu_bar").insert(fileMenu);
See also
http://groups.google.com/group/rubyonrails-spinoffs/msg/d8a72071c044d7e3
for more on how toElement works.
Best,
-Nicolas
On Dec 7, 2007 12:10 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
> is it possibile to create a subclass of DOM Elements? For example I
> would like to be able to write:
>
> var MyMenu = Class.create('UL', {
> initialize: function () {
> },
> addItem: function (item) {
> // create new LI and attach to this
> }
> });
>
> var menu = new MyMenu();
> menu.addItem('hello');
>
> and I would like this code to create a new UL element, which would
> have an addidional addItem method. Is it possible?
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Spinoffs" 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/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---