
Chciałbym dać Wam do oceny moje menu wykonane z użyciem Prototype.
http://phpworkstation.com/prototype/menu.html
Natchnieniem do jego wykonania było to menu napisane w jQuery. Jak widać mój kod jest nieco dłuższy

Jest to mój pierwszy kontakt z Prototype więc prosiłbym o wytknięcie wszelkich błędów tudzież nakierowanie co można było rozwiązać inaczej, lepiej. W sumie kod dostępny jest bezpośrednio w pliku jednak pozwolę go sobie wkleić również tutaj:
var currentDd = null; var SlideMenu = Class.create(); SlideMenu.prototype = { initialize: function(id) { this.id = id; this.elements = new Array(); var childs = $(this.id).childElements(); var childsLength = childs.length; var dt; var dd; for (var i=0; i<childsLength; i++) { var child = childs[i]; switch (child.tagName.toLowerCase()) { case "dt": dt = (child.className != "empty") ? new SlideMenu_Dt(child) : null; break; case "dd": dd = new SlideMenu_Dd(child); child.hide(); if (dt instanceof SlideMenu_Dt && dd instanceof SlideMenu_Dd) { this.elements.push(new SlideMenu_Pair(dt, dd)); dt = null; dd = null; } break; } } } } var SlideMenu_Pair = Class.create(); SlideMenu_Pair.prototype = { initialize: function(dt, dd) { this.dt = dt; this.dd = dd; dt.element.onclick = function() { if (dd != currentDd) { if (!dd.isOpened) { dd.open(); } else { dd.close(); } currentDd = dd; } } } } var SlideMenu_Dt = Class.create(); SlideMenu_Dt.prototype = { initialize: function(element) { this.element = element; } } var SlideMenu_Dd = Class.create(); SlideMenu_Dd.prototype = { initialize: function(element) { this.element = element; this.isOpened = false; }, open: function() { if (currentDd != null) { currentDd.close(); } if (!this.isOpened) { new Effect.SlideDown(this.element, {duration:0.1}); this.isOpened = true; } }, close: function() { if (this.isOpened) { new Effect.SlideUp(this.element, {duration:0.1}); this.isOpened = false; } } } function initMenu() { var menu = new SlideMenu("root"); } Event.observe(window, "load", initMenu, false);
Równocześnie prosiłbym o zgłaszanie ewentualnych problemów w działaniu (testowałem na Operze i FireFoxie).
Pozdrawiam: pion
