XMLパーサのためのjQueryを使用して、基本的なJavaScriptのクラスとインスタンス「$(この)」

StackOverflow https://stackoverflow.com/questions/1748501

質問

私は(ゆっくり)のウェブサイトを駆動するいくつかの「サイト定義」ファイル用のXMLパーサを書いています。要素の多くは、同じ方法で解析され、私は必ずしもそれぞれの値を保持する必要はありません。

XML

これまで

私の質問は、実際にはかなり簡単です:どのように私はクラスの関数でjqueryのマニピュレータを使用することができますか?どのように私は$(this)を渡すことができますか?私はそれが時々DOMオブジェクトと時々jQueryオブジェクトを参照していることを知っているが、少しかすんでいます。

私の関数の場合:

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;
            }
        };
    }); 
    }
    });

私は配置したい。

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

クラスでは、私は

のような何かを行うことができます
var child = new Element(); and var subchild = new Element();

、その後child.label , child.text and child.keyを使用して... しかし、これらとjqueryのメソッドを使用する方法が、再び、わからない...私は処理するために、より多くのノードを持っていると私はvar label = $(this).get(0).tagName; and then var childLabel = $(this).get(0).tagName;ようなものをやって維持する必要はありません。

感謝します。

役に立ちましたか?

解決

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]をので、これは私はそれが最善の方法だかどうかわからないんだけど、働きます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top