Frage

Ich bin (langsam) einen XML-Parser für einige „Site-Definition“ Schreiben von Dateien, die eine Website fahren. Viele der Elemente werden auf die gleiche Weise analysiert werden, und ich werde nicht unbedingt die Werte für jeden halten müssen.

Die XML

Der Parser so weit

Meine Frage ist eigentlich ganz einfach: Wie kann ich jquery Manipulatoren in einer Klasse-Funktion verwenden? Wie kann ich $ (this) passieren? Ich weiß, dass es manchmal zu einem DOM-Objekt verweist und manchmal das jQuery-Objekt, aber ich bin ein bisschen trüb.

Für meine Funktion:

function parseXML(xml) {
    $("book, site", xml).children().each(function() {
        var label = $(this).get(0).tagName;
        var text = $(this).text();
        var key = toCamelCase(label);
        if ((key in siteData) && (text != -1)){
        if (isArray(siteData[key]))
        {   
            $(this).children().each(function (){
                var childLabel = $(this).get(0).tagName;
                var childText = $(this).text();
                var childKey = toCamelCase(childLabel);
                if(isArray(siteData[key][childKey]))
                {
                  siteData[key][childKey].push(childText);  
                }
                else {
                    siteData[key].push(childText);
                }
            });  
        }
        else 
        {
            siteData[key] = text;
            }
        };
    }); 
    }
    });

Ich möchte Ort

var label = $(this).get(0).tagName; var text = $(this).text(); var key = toCamelCase(label);

in einer Klasse, so dass ich etwas tun kann, wie

var child = new Element(); and var subchild = new Element();

und dann Verwendung child.label , child.text and child.key ... Aber auch hier nicht sicher, wie mit diesen die jquery Methoden verwenden ... Ich habe mehr Knoten zu verarbeiten, und ich will nicht Dinge tun, wie var label = $(this).get(0).tagName; and then var childLabel = $(this).get(0).tagName; halten

Danke.

War es hilfreich?

Lösung

var app = {};
app.element = function(data) {
    return function() {
    var _text = data.get(0).tagName, _label= data.text(), _key = toCamelCase(_label);
        var that = {};
        that.label = function() {
            return _label;
        }
        that.text = function() {
            return _text;
        }
        that.key = function() {
            return _key;
        }
        return that;
    }();
};
app.instanceA = app.element($(this));
document.writeln(app.instanceA.label()); 

Ok, so das funktioniert, aber ich bin mir nicht sicher, ob es der beste Weg ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top