XMLパーサのためのjQueryを使用して、基本的なJavaScriptのクラスとインスタンス「$(この)」
-
20-09-2019 - |
質問
私は(ゆっくり)のウェブサイトを駆動するいくつかの「サイト定義」ファイル用の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]をので、これは私はそれが最善の方法だかどうかわからないんだけど、働きます。
所属していません StackOverflow