【问题标题】:a basic javascript class and instance using jquery "$(this)" for XML parser使用 jquery "$(this)" 进行 XML 解析器的基本 javascript 类和实例
【发布时间】:2010-12-17 10:29:23
【问题描述】:

我正在(慢慢地)为一些将驱动网站的“站点定义”文件编写 XML 解析器。许多元素将以相同的方式解析,我不一定需要保留每个元素的值。

The XML

The parser so far

我的问题其实很简单:如何在类函数中使用 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;

谢谢。

【问题讨论】:

    标签: javascript jquery class this xml-parsing


    【解决方案1】:
    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()); 
    

    好吧,这行得通,但是我不确定这是否是最好的方法。

    【讨论】:

    • 哎呀,.text() 的冲突...必须重命名。除此之外,它确实有效。也不确定这是否是最好的方法。
    • 您应该做的是获得“JavaScript:The Good Parts”,这是一本很棒的书,而且很短。我刚刚完成它,但是有几章是关于继承的。使用原型有更好的方法来做到这一点。但是我需要重读这本书;p
    • 我有一个想法,让我们提出一个问题
    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多