使用 jquery“$(this)”的基本 javascript 类和实例用于 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 和 child.key
... 但同样,不知道如何使用 jquery 方法与这些...我有更多的节点要处理,我不想继续做类似 var label = $(this).get(0).tagName 的事情;然后 var childLabel = $(this).get(0).tagName;
谢谢。
I am (slowly) writing an XML parser for some "site definition" files that will drive a website. Many of the elements will be parsed in the same manner and I won't necessarily need to keep the values for each.
My question is actually pretty simple: How can I use jquery manipulators in an class function? How can I pass $(this)? I know that it sometimes refers to a DOM object and sometimes the jQuery object, but am a bit hazy.
For my function:
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;
}
};
});
}
});
I want to place
var label = $(this).get(0).tagName; var text = $(this).text(); var key = toCamelCase(label);
in a class, so I can do something like
var child = new Element(); and var subchild = new Element();
and then use child.label , child.text and child.key
...
But again, not sure how to use the jquery methods with these... I have more nodes to process and I don't want to keep doing stuff like var label = $(this).get(0).tagName; and then var childLabel = $(this).get(0).tagName;
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,这可行,但是,我不确定这是否是最好的方法。
Ok so this works but, I'm not sure if it's the best way.