我正在尝试使用jQuery解析一些XML数据,并且我已经提取了所需节点的“ID”属性并将它们存储在一个数组中,现在我想为每个数组成员运行一个循环并最终从特定于每个ID的注释中获取更多属性。
目前的问题是,一旦我进入'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');
});
}
}
});
});
有什么想法吗?
答案 0 :(得分:1)
应该是:
$(xml).find("*[ID=" + arrayIds[i] + "]").each(function(){
// pass values
alert('test');
});
在您查找具有文字值“arrayIds [i]”的id之前。此外,ID是唯一的,因此您不需要C,我将其更改为标准的jQuery语法。此外,正如帕特里克所说,你错过了每一个。
答案 1 :(得分:1)
此行无效。你错过了一个功能名称。这会使脚本崩溃。
$(xml).find("C[ID='arrayIds[i]']").(function(){
应该(也许):
$(xml).find("C[ID='" + arrayIds[i] + "']").each(function(){ // Note the added each