0

这是我的 XML。我将拥有许多学位,每个学位将有许多学校,每个学校将有许多专业。该页面将提供三个下拉菜单。我不是要求所有代码来执行所有 onclicks 嵌套下拉更新。(除非有人有一些很酷的重复模式,否则会起作用。

我遇到的这个问题是,当我从 Degrees 节点询问学位并将 text() 添加到下拉列表中时,我从学位、学校、规范中获取所有文本......所以我想要的是一个带有“学位”的下拉列表1”,但我得到“Degree 1 School 1 Spec...”,我相信你明白了,我尝试添加“Degrees.filter, and children”,但我什么也没得到。

我需要了解如何一次使用嵌套节点解析 XML。

谢谢你的时间。

<Degrees>
  <Degree>
  Degree 1
  <Schools>
    <School>School 1
      <Specializations>
       <Specialization>Specialization 1</Specialization>
       <Specialization>Specialization 2</Specialization>
      </Specializations>
    </School>
    <School>School 2
      <Specializations>
       <Specialization>Specialization 3</Specialization>
       <Specialization>Specialization 4</Specialization>
      </Specializations>
    </School>
  </Schools>
  </Degree>
</Degrees>

当前的 jQuery

var Degrees = $(PID).find('Degrees');
    Degrees.find("Degree").filter("Degree").each(function () {
    var select = $('#degree');
    var value = $(this).text();
    select.append("<option value='" + value + "'>" + value + "</option>");
    });

的HTML

<select id="degree">
    <option value="" selected="selected">-- Select Degree --</option>
</select>
4

1 回答 1

0

这是我最终做的,这也允许我对下拉列表进行排序。如果有人有任何其他想法,请发表评论。

var degreelist = new Array();
                $(xml).find('PID[id="' + PID + '"] Degrees Degree').each(function () {
                    var Item = new Object();
                    Item.Id = $(this).attr("id");
                    Item.value = $(xml).find('Degrees Degree[id=' + Item.Id + ']').text();
                    degreelist.push(Item);
                });

                degreelist.sort(function (a, b) {
                    if (a.value.text > b.value.text) return 1;
                    else if (a.value.text < b.value.text) return -1;
                    else return 0
                })

                for (var i = 0; i < degreelist.length; i++) {
                    $('#degree').append("<option value='" + degreelist[i].Id + "'>" + degreelist[i].value + "</option>");
                }
于 2012-06-05T18:45:19.070 回答