jscouch.de

jqueryUI contextmenu

22 04|11

Seit der Ankündigung der Filament Group, ihr Menu-Plugin direkt in jQueryUI zu packen, habe ich immer wieder neugierig die Entwicklung des Widgets beobachtet. Mit dem Milestone2 der kommenden jQueryUI Version kam mir die Idee, das ganze in einen Kontextmenü-Wrapper zu packen, jedoch musste ich das aus Zeitgründen ewig vor mir herschieben.

Vor ein paar Wochen habe ich dann angefangen, meine Idee in die Tat umzusetzen, mit der Version 0.3 (stand heute) sollten die gröbsten Fehler behoben sein.

Warum nicht direkt vererben?

Da das Menu-Widget noch nicht offiziell released ist, könnte sich intern noch jede Menge ändern, zumal der Status des Plugins im Wiki noch mit "in development" markiert ist. Würde ich direkt vererben, müsste ich die Änderungen ständig verfolgen und meine Erweiterungen dahingehend anpassen. Indem meine Erweiterung einfach eine Instanz eines Menu-Widgets wrappt, muss ich mich (erstmal) weit weniger um deren Internas kümmern.

Daher ist die Notation meines Kontextmenüs genau umgedreht verglichen zur Implementierung des Menüs. Während man beim Menü direkt den Menü-Dom-Knoten adressiert (sprich $( '#mymenu' ).menu() ), gibt man in meiner Implementierung an, welcher Knoten über ein Kontextmenü verfügt. Das Menü selbst gibt man direkt als jQuery-Objekt über die Optionen mit - die Menüinstanz kann bereits im Vorfeld aufgebaut werden oder man überlässt das dem Kontextmenü.

Das Kontextmenü selbst kann direkt an $( window ) oder an einen beliebigen DOM-Node gebunden werden. Für denjenigen, der eine andere Art der Positionierung möchte, habe ich die position-properties direkt in den Optionen exponiert.

Die aktuelle Demo-Seite findet ihr hier.

IE6 Support?

Da der IE6 kein position:fixed kann (und wir Entwickler M$ dafür aus tiefstem Herzen für diesen "Beinahe-Browser" bewundern), tun wir bitte bitte bitte einfach mal alle so, als hätte dieses Redmond-Monster niemals existiert. 

Fehler entdeckt? Kritik?

Immer her damit. Fehler wenn möglich bitte auf dem issue tracker von github melden.

Bisher keine Kommentare.

Copyright© 2010-2014 Sebastian Sauer

Jeder Inhalt auf dieser Seite wurde - sofern nicht ausdrücklich anders lizenziert -unter der Creative Commons Attribution-NonCommercial 3.0 Unported Lizenz (CC BY-NC 3.0) veröffentlicht. Eine Weitervorgabe von Inhalten muss unter gleicher Lizenz geschehen.