2012-05-02 3 views
1

지난 몇 시간 동안 이것을 알아 내려고 노력했지만 머리를 감당할 수 없으므로 다음과 같은 기능이 있습니다. :변수에서 .each() .find() 및 .text()를 사용합니다.

$("SPEECH",currentContext).each(function(){ 
     var speaker = $("#selectSpeaker").val(); 
     if($(this).find("SPEAKER").text()===speaker){ 
      var line = $(this).find("LINE").text(); 

      $("#speakers").append("<p class='speech'>" + speaker + "</p>" + "<p>" + line + "</p>"); 
     } 
    }); 

및 XML은 같은 마크 업 : http://pastebin.com/GhesMcay

내가 정보에 당기고 뭐하는 거지 같은 LINE & XML을 통해 SPEECH, 그리고 그것의가 선택한 SPEAKER을 찾는 찾는 거의 완벽하게 작동한다 LINE '이 스피커와 연결되어 출력됩니다. 그러나 나는 XML에서 행에있는 LINE이 각각 (원하는대로) 새로운 단락 대신 하나의 긴 단락에 배치된다는 것을 알게되었습니다. 이렇게하면 행에있는 행의 경우 한 행의 끝과 다음 행의 시작 사이에 공백이 없으므로 행의 시작 및 끝 단어가 서로 결합됩니다.

내 지식에 따르면 각 개별 라인을 찾는 것이 아니라고 말할 수 있으므로 내 생각에 변수 내에서 .each()을 사용하면이 문제를 해결할 수 있다고 생각합니다. 그러나 문제가 해결되지 않는 것 같습니다.

도움이 될 것입니다. 사전에

감사합니다.

답변

4

기본적으로 언급 한 내용이 정확합니다. $(this).find("LINE")이 두 개 이상의 항목을 반환하면 text()으로 전화하면 텍스트가 함께 연결됩니다. 개별적으로 각각의 뭔가를하고 싶은 경우에, 당신은 each를 사용할 수 있습니다

var lines = $(this).find("LINE"); 

lines.each(function(){ 
    var singleLine = $(this); 

    // do something here 
}); 

편집이 : 또 다른 옵션은 map을 사용하는 것입니다 :

var lines = $(this).find("LINE").map(function(){ 
    return "<p>" + $(this).text() + "</p>"; 
}).get().join(""); 

$("#speakers").append("<p class='speech'>" + speaker + "</p>" + lines); 
+0

http://pastebin.com/J072RsGa를 시도했지만 성공하지 못했다면 어쩌면 뭔가를 놓쳤는 지 모른다. 지금지도를 사용해 보자. – Michael

+0

@michael 나는 사본/붙여 넣기 오류가 거기에있는 첫 번째 줄에. –

+0

줄/줄? 난 그걸 어떻게 든 변경했습니다. – Michael

0

.find (...)를 할 수 잠재적으로 항목 배열을 반환합니다.()이 .MAP를 잊으 반환 값으로 하나 그리고 당신은 .makeArray 전화를해야 :

$("SPEECH",currentContext).each(function(){ 
    var speaker = $("#selectSpeaker").val(); 
    if($(this).find("SPEAKER").text()===speaker){ 

     // treat this like an array, and return a new paragraph for each line: 
     var lines = $.makeArray(
      $(this).find("LINE").map(function() { return "<p>" + $(this).text() + "</p>"; }) 
     ); 

     $("#speakers").append("<p class='speech'>" + speaker + "</p>" + lines.join("")); 
    } 
}); 

편집 : 당신은 그들을지도해야한다. :(불행히도 간단하지 않다.)

+0

이것은 실제로 작동하지 않을 것입니다. 각각 내에서 돌아 오는 것은 실제로 루프를 벗어나거나 계속 진행하는 데 사용됩니다. –

+0

불행히도 @JamesMontagne는 오른쪽 친구이고, 그것은 작동하지 않았다, 입력을위한 감사! – Michael

관련 문제