2012-06-04 2 views
0

내 XML은 다음과 같습니다. 나는 많은 학위를 갖게 될 것이고, 각 학위는 많은 학교를 가질 것이며, 각 학교는 많은 전문화 과정을 가질 것입니다. 페이지에서 세 번의 드롭 다운이 제공됩니다. 모든 onclicks 중첩 된 드롭 다운 업데이트를 실행하기위한 모든 코드를 요구하지는 않습니다. (누군가가 멋진 반복 패턴을 가지고 있지 않는 한.jquery에서 XML의 구문 분석 수준

이 문제는 학위 노드에서 학위를 요청하고 드롭 다운에 텍스트()를 추가 할 때 학위에서 모든 텍스트를 가져 오는 것입니다. 학교, 사양 ... 내가 원하는 것은 "학위 1"을 가진 드롭 다운이지만, "Degree 1 School 1 Spec ..."을 얻었습니다. 아이디어를 얻었을 것이라고 확신합니다. "Degrees.filter, 어린이 "하지만 나는 아무것도 얻을 수 없습니다.

내가 한 번에 수준 번 중첩 된 노드와 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>"); 
    }); 

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

답변

0
여기

내가하고 결국 무엇인가가,이 또한 저 드롭 다운을 정렬 할 수있는 HTML. 다른 아이디어가 있으면 의견을 말하십시오.

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>"); 
       }