jQuery - Array und Objekte kombinieren?

unrealzero_php

Erfahrenes Mitglied
Hallo zusammen

Bei einem aktuellen Projekt, welches diverse Modul mit einer entsprechenden ID hat, möchte ich die gewisse Werte für jedes Modul irgendwo zwischen speichern.

Jedes Modul hat folgende angaben:

- ID
- Farbe
- Datei
- Status

Die Idee ist, dass es einen Array gibt über welchen das Modul identifiziert werden kann. Jeder dieser Arrays hat ein Objekt mit den entsprechenden Daten.

Nun meine Frage ist es so möglich, gibt es eine bessere Idee?

Mein Vorgehen (Plug-In):

Code:
(function($){

	$.fn.addModul = function() {
        
        var modules = new Array();
        
	    this.each(function(){

	        var module_id    = $(this).attr('id').match(/form_([0-9]+)/)[1];
	        var file         = $('#file_' + module_id).val();
	        var state        = $('#state_' + module_id).val();
	        var color        = $('#color_' + module_id).val();

            
            modules[module_id] = // Werte an einem Objekt zuordnen
	    });
	};
	
})(jQuery);

Über jQuery binde ich das ganze folgendermassen ein:

Code:
$(document).ready(function(){

    /* Module-Daten in Objekt schreiben */      
    $('form[id^=form_]').addModul();
});

Wie kann ich diese Werte an einem Objekt zuordnen und anschliessend wieder auf diese zugreifen bzw. wie löst man so eine Problematik (ist das der richtige Ansatz)?
 
Wenn ich dich richtig verstehe, geht es so:
Javascript:
// Werte an einem Objekt zuordnen
modules[module_id] = {
    file: file,
    state: state,
    color: color
}

//Zugriff Beispiel
alert(modules[some_id].color);
 
Wenn ich dich richtig verstehe, geht es so:
Javascript:
// Werte an einem Objekt zuordnen
modules[module_id] = {
    file: file,
    state: state,
    color: color
}

//Zugriff Beispiel
alert(modules[some_id].color);

Mit diesem Versuch scheint die Zuordnung zu funktionieren jedoch nicht der Zugriff:
 

Anhänge

  • error.jpg
    error.jpg
    18,2 KB · Aufrufe: 76
Wo greifst du denn darauf zu? Das Array ist ja nur innerhalb deines Plugins bekannt (sogar nur während der "addModul()" Funktion).
Um es an das Plugin zu binden, musst du vermutlich this.modules = new Array() benutzen.
Folgendes funktioniert einwandfrei.

Javascript:
var modules = [];
modules[164] = {
    foo: "bar",
    noch_was: 15
};//Das Semikolon fehlte im vorherigen Beispiel

alert(modules[164].noch_was);//15

Vielleicht liegt es auch an dem vergessenen Semikolon nach der schließenden geschweiften Klammer.
 

Neue Beiträge

Zurück