假设我有一个xml .." xml2.xml"
<aurora>
<event> abc </event>
<event> abc </event>
<event> abc </event>
<event>
<subeve> def </subeve>
<subeve> def </subeve>
<subeve> def </subeve>
</event>
<event>
<subeve> def </subeve>
<subeve> def </subeve>
<subeve> def </subeve>
</event>
</aurora>
还有一个jquery代码..
<script>
$(document).ready(function () {
$.ajax({
type: "GET",
url: "xml2.xml",
dataType: "xml",
success: xmlParser
});
});
function xmlParser(xml) {
$(xml).find("event").each(function () {
$(".slides").append('<b>1');
$(this).find("subeve").each(function () {
$(".slides").append('<i>2</i>');
});
$(".slides").append('</b>');
});
}
</script>
输出为:<b>1111</b><i>222</i><b>1</b><i>222</i>
但我希望输出为......:<b>1111<i>222</i>1<i>222</i></b>
我怎么能这样做???
我的第二个问题..我的第一个问题真的很傻吗? : - &LT;
答案 0 :(得分:3)
你在考虑标记(<b>
然后是</b>
),但是一旦你处理了DOM元素,你就会处理对象,而不是标记。具体来说,当您执行$(".slides").append("<b>");
时,创建一个b
元素并将其附加到slides
。它不会“打开”<b>
标记。然后,当您稍后执行$(".slides").append("<i>2</i>");
时,它会创建一个i
元素并将其附加到幻灯片,在 b
元素之后,而不在其中。我不知道jQuery对.append("</b>")
做了什么,不要这样做。 : - )
您可以构建元素并随意附加元素(将i
元素附加到每个b
,并将b
附加到.slides
),或者构建标记字符串,并在完成后将其附加到.slides
。
构建元素的第一个选项可能如下所示:
function xmlParser(xml) {
var slides = $(".slides");
$(xml).find("event").each(function () {
var b = $("<b>").text("1");
$(this).find("subeve").each(function () {
b.append('<i>2</i>');
});
slides.append(b);
});
}
构建标记的第二个选项可能如下所示:
function xmlParser(xml) {
var markup = [];
$(xml).find("event").each(function () {
markup.push('<b>1');
$(this).find("subeve").each(function () {
markup.push('<i>2</i>');
});
markup.push('</b>');
});
$(".slides").append(markup.join(""));
}
答案 1 :(得分:-1)
如果您只想让所有内容以粗体显示,请使用CSS:
.slides{
font-weight:bold;
}
如果您想将HTML标记用于某些不同的目的,我强烈建议您使用某种形式的模板,而不是使用jQuery创建原始HTML。