我正在尝试使用 append 使用 xml 文件中的数据生成 html。但是我无法让嵌套数据出现在正确的 html 元素中。代码来了。希望你能看到我要做什么。
Javascript
$(document).ready(function()
{
$.ajax({
type: "GET",
url: "data.xml",
dataType: "xml",
success: parseXml
});
})
function parseXml(xml) {
$(xml).find('period').each( function(){
$('#timeline').append('<div id="slide">');
$(this).find('event').each(function(i,e){
$('#slide').append('<div class="image-div">\
<h1>' + $(this).attr('year') + '</h1>\
<h2>' + $(this).find('title').text() + '</h2>\
<img src="images/' + $(this).find('image').text() + '" />\
<p>' + $(this).find('description').text() + '</p></div>');
});
$('#slide').append('</div>');
});
}
XML 文件 - data.xml
<?xml version="1.0" encoding="utf-8"?>
<timeline>
<imgurl>images/</imgurl>
<period date="1910">
<event year="1912">
<title>Here's a title</title>
<image>temp.jpg</image>
<description>Lorem ipsum </description>
</event>
<event year="1915">
<title>Here's a title</title>
<image>temp.jpg</image>
<description>Lorem ipsum </description>
</event>
<event year="1917">
<title>Here's a title</title>
<image>temp.jpg</image>
<description>Lorem ipsum </description>
</event>
</period>
<period date="1920">
<event year="1924">
<title>Title number 2</title>
<image>temp.jpg</image>
<description>Lorem ipsum </description>
</event>
</period>
<period date="1930">
<event year="1937">
<title>This is the 3rd one</title>
<image>temp.jpg</image>
<description>Lorem ipsum </description>
</event>
</period>
</timeline>
我要使用的 html 输出结构类似于:
<div id="timeline">
<div id="slide">
<div class="image-div">...</div>
<div class="image-div">...</div>
<div class="image-div">...</div>
</div>
<div id="slide">
<div class="image-div">...</div>
</div>
<div id="slide">
<div class="image-div">...</div>
</div>
</div>
但是我当前的代码将所有 image-div 元素放入第一个#slide div,而不是根据它们在 xml 文件中的嵌套位置将它们分类为三个不同的#slide div。我实际上可以让它与 document.write 一起正常工作,但由于显而易见的原因,这并不理想,因为它也删除了我的 css。
Append 是我知道从我的 xml 文件生成 html 并且仍然使用单独的样式表来添加样式的唯一方法。任何帮助将不胜感激。