遇到问题解析XML使用jQuery
我试图解析使用jQuery一些XML数据,并且因为它代表我已经提取所需的节点“id”属性,并将它们存储在一个数组,现在我想运行为每个数组成员创建一个循环,并最终从特定于每个ID的笔记中获取更多属性。遇到问题解析XML使用jQuery
问题目前是一旦我到了“for”循环,它不是循环,我想我可能没有正确写入的XML路径数据。它运行一次,我收到'alert(arrayIds.length);'只有一次,如果我删除后续的XML路径代码,它只循环正确的次数。
这里是我的功能:
var arrayIds = new Array();
$(document).ready(function(){
$.ajax({
type: "GET",
url: "question.xml",
dataType: "xml",
success: function(xml)
{
$(xml).find("C").each(function(){
$("#attr2").append($(this).attr('ID') + "<br />");
arrayIds.push($(this).attr('ID'));
});
for (i=0; i<arrayIds.length; i++)
{
alert(arrayIds.length);
$(xml).find("C[ID='arrayIds[i]']").(function(){
// pass values
alert('test');
});
}
}
});
});
任何想法?
此行是无效的。你错过了一个函数名。这是崩溃的脚本。
$(xml).find("C[ID='arrayIds[i]']").(function(){
应该是(也许):
$(xml).find("C[ID='" + arrayIds[i] + "']").each(function(){ // Note the added each
它应该是:
$(xml).find("*[ID=" + arrayIds[i] + "]").each(function(){
// pass values
alert('test');
});
之前,你正在寻找与文字值 “arrayIds [I]” 的ID。另外,ids是唯一的,所以你不需要C,我将它改为标准的jQuery语法。另外,正如帕特里克所说,你错过了每一个。
ammending我的代码对你的建议之后,在行为上没有变化,我的错误控制台提示我“XML过滤器适用于非XML值......“。 补充:我已经添加了“每个”,这再次像帕特里克的回答导致循环正常运行,但我仍然有执行循环内的函数触发第二警报麻烦。 任何想法? 我不是很熟悉这个错误。 – 2010-06-02 15:26:05
''#'+ arrayIds [i]'依靠分析器知道名为'ID'的属性应该是模式类型'ID'。对于HTML文档将是这种情况,但对于XML,它通常不会。 '[ID = ...]'属性选择器*是必需的。 – bobince 2010-06-02 15:27:44
谢谢@bobince。我的错。 – 2010-06-02 15:29:40
你的建议确实导致'alert(arrayIds.length)''循环并运行正确的次数,然而'alert('test');'内部函数内部因某种原因未执行。 – 2010-06-02 15:26:29
您的选择器也不正确。我会更新我的答案。 – user113716 2010-06-02 15:28:13
Matthews最新版本似乎解决了这个问题。尽管非常感谢您的帮助。 – 2010-06-02 15:36:24