الأساسي لمسج الطبقة جافا سكريبت والمثال باستخدام "$ (هذا)" لمحلل XML

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

سؤال

وأنا (ببطء) كتابة محلل XML لبعض ملفات "تعريف الموقع" من شأنها أن تدفع موقع على شبكة الانترنت. سيتم تحليل العديد من العناصر بنفس الطريقة وأنا لن تحتاج بالضرورة للحفاظ على القيم لكل منها.

وXML

محلل حتى الآن

وسؤالي هو في الواقع بسيط جدا: كيف يمكنني استخدام المتلاعبين مسج في وظيفة من الدرجة؟ كيف يمكنني تمرير $ (هذا)؟ وأنا أعلم أنه يشير أحيانا إلى كائن DOM وأحيانا الكائن مسج، ولكن أنا من ضبابية بعض الشيء.

لوظيفتي:

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 ... ولكن مرة أخرى، غير متأكد من كيفية استخدام الأساليب مسج مع هذه ... لدي أكثر من العقد لعملية وأنا لا أريد أن تستمر في فعل الاشياء مثل 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()); 

وطيب حتى هذه الأعمال، ولكن أنا لست متأكدا مما إذا كان هذا هو أفضل وسيلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top