una clase básica javascript y jQuery ejemplo utilizando “$ (this)” para el analizador XML
-
20-09-2019 - |
Pregunta
Soy (lentamente) a escribir un analizador XML para algunos archivos de definición de "sitio" que impulsarán un sitio web. Muchos de los elementos serán analizados de la misma manera y no necesariamente necesita para mantener los valores de cada uno.
Mi pregunta es en realidad bastante simple: ¿Cómo puedo usar manipuladores jquery en una función de clase? ¿Cómo puedo pasar $ (este)? Yo sé que a veces se refiere a un objeto DOM y, a veces el objeto jQuery, pero estoy un poco confusa.
Para mi función:
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;
}
};
});
}
});
quiero poner
var label = $(this).get(0).tagName; var text = $(this).text(); var key = toCamelCase(label);
en una clase, por lo que puedo hacer algo como
var child = new Element(); and var subchild = new Element();
y luego usar child.label , child.text and child.key
...
Pero, de nuevo, no está seguro de cómo utilizar los métodos de jQuery con estos ... tengo más nodos para procesar y no quiero seguir haciendo cosas por el estilo var label = $(this).get(0).tagName; and then var childLabel = $(this).get(0).tagName;
Gracias.
Solución
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());
La autorización así que esto funciona, pero, no estoy seguro de si se trata de la mejor manera.