2009-04-02 8 views
4

Ich arbeite an einer Windowing-Anwendung für eine Website von mir. Im Moment habe ich jedes einzelne Fenster als im Körper der Site eingerichtet. Ich füge neue Fenster hinzu, indem ich buchstäblich den entsprechenden Code am Ende des body-Elements anfüge, und lösche sie, indem ich dieses div entferne. (Ich verwende jQuery für die zugrunde liegende JavaScript-Architektur.)Ist es legal, eigene CSS-Attribute zu erstellen?

Ich habe festgestellt, dass ich für jedes Fenster in der Lage sein möchte, einige Werte zu speichern, die nicht direkt verwendet werden. Angenommen, ich maximiere ein Fenster, würde ich seine alte Position und Größe speichern wollen, so dass, wenn ich es maximiere, es zu seiner alten Position und nicht nur irgendwo zufällig zurückkehrt. Meine eigentliche Frage ist also, ob es legal wäre, benutzerdefinierte CSS-Attribute zu erstellen (wohl wissend, dass der Browser sie ignorieren würde), mit dem einzigen Zweck, Informationen wie diese pro div zu halten. Oder wäre das illegal, und sollte ich mir eine andere Alternative ansehen?

Ich bin sicherlich vertraut mit Methoden, all dies in einem Array zu halten, damit das System blind damit laufen kann, aber das ist schön und anfällig für Fehler und Dinge, und es wäre immer noch ein bisschen schwierig zu arbeiten mit.

Dank

+0

Klingt wie du meintest Javascript-Attribute (Eigenschaften) statt CSS-Attribute .... –

+0

Vielleicht. In der Tat bezog ich mich auf die Verwendung von jQuery, um etwas wie $ (". Window") zu machen. Css ("my-property", value); aber es könnte definitiv bessere Wege geben, es zu tun. –

Antwort

7

jQuery hat eine wenig bekannte Funktion dafür data genannt. Mit ihm können Sie dies tun:

$('#mydiv').data('position', {x: 150, y: 300}); 

// later 
var position = $('#mydiv').data('position'); 

Wenn Sie dies nicht mögen (obwohl ich es ganz praktisch finden) ist es sicherlich nicht falsch benutzerdefinierte Attribute zu haben, obwohl dies wird es ungültigen Code machen.

+0

Beachten Sie, dass die Verwendung von Daten im Dom sehr langsam werden kann. Sie können nach Möglichkeit andere Ansätze betrachten – roberthuttinger

8

I jQuery ‚s data() Methode anstelle zum Speichern von temporären Daten verwenden würde.

$('div#window').data('position', { x: 100, y: 200, width: 50, height: 50}); 
$('div#window').data('state', 'minimized'); 

Referenzen:

Sie können auch diese Daten persistent machen, indem sie es in Cookies oder in Sitzung auf Server-Seite zu speichern und wiederherstellen auf der Client beim Laden der Seite. Auf diese Weise werden die Position und der Status des Fensters beibehalten, auch wenn der Benutzer die Seite neu lädt.

+0

Beide genau das, was ich brauchte, würde ich auch deins akzeptieren, wenn ich könnte, aber ich werde es nur upvote, da ich nicht kann. Vielen Dank!^_^ –