使用jQuery解析XML时遇到问题

时间:2010-06-02 15:12:52

标签: javascript xml jquery

我正在尝试使用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');
                    });
                  }
    }
  });
});

有什么想法吗?

2 个答案:

答案 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