Mic*_*ael 2 javascript xml each jquery find
在过去的几个小时里,我一直试图弄清楚这一点,但无法理解,所以我有以下功能:
$("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>");
}
});
Run Code Online (Sandbox Code Playgroud)
和 XML 标记为:http : //pastebin.com/GhesMcay
我正在做的是通过 XML获取诸如LINE& 之类的信息SPEECH,并且它几乎完美地工作,它找到了选定的SPEAKER,找到了LINE与扬声器相关的's 并输出它们。但是,我发现LINEXML 中连续的任何's 都被放入 1 个长段落而不是每个段落的新段落(就像我想要的那样)。通过这样做,对于一行中的行,一行的末尾和下一行的开头之间没有空格,因此行的开始和结束字连接在一起。
根据我的知识,我可以说这归结为没有寻找每一行,所以我的想法是.each()在变量中使用可以解决这个问题,但是我似乎无法让它工作。
任何帮助将不胜感激!
提前致谢。
你说的基本正确。如果$(this).find("LINE")返回多个项目,那么当您调用text()文本时,文本将连接在一起。如果您想对每个人单独做某事,您可以使用each:
var lines = $(this).find("LINE");
lines.each(function(){
var singleLine = $(this);
// do something here
});
Run Code Online (Sandbox Code Playgroud)
编辑:另一种选择是使用map:
var lines = $(this).find("LINE").map(function(){
return "<p>" + $(this).text() + "</p>";
}).get().join("");
$("#speakers").append("<p class='speech'>" + speaker + "</p>" + lines);
Run Code Online (Sandbox Code Playgroud)