我想要做的是使用JQuery Mobile我想在#newPage上动态加载内容,具体取决于我点击的选项。下面是我尝试的代码转到#newPage,但不加载任何内容。我试图提供尽可能多的信息,并逐行评论我想要它做什么。
示例XML:
<parentOption>
<option1>
<name>Stuff</name>
</option1>
<potion2>
<name>More Stuff</name>
</potion2>
<option3>
<name>Even More Stuff</name>
</option3>
</parentOption>
假设我已通过Ajax连接到XML文件:
<script>
function parseXML(xml) { //Parse the XML
$('selected').click(function(e) { //Once the link is clicked
var selectedValue = $(this).value(); //Find the value of the clicked link
e.preventDefault(); //Refresh the new page
$(xml).find(selectedValue).each(function() { //take the XML info and select all of the elements equaling to the value of the selected link
var nameValue = $(this).parent(); //Find the parent of the selected element
$('#dynamicList').append('<li>' + $(nameValue).child('name').text() + '</li>'); //Write out the list on the new page
});
$('#dynamicList').listview('refresh');
});
}
</script>
<div data-role="page" id="home">
<div data-role="content">
<ul data-role="listview">
<li><a class="selected" value="option1" href="#newPage">Option 1</a></li>
<li><a class="selected" value="option1" href="#newPage">Option 2</a></li>
<li><a class="selected" value="option1" href="#newPage">Option 3</a></li>
</ul>
</div>
</div>
<div data-role="page" id="newPage">
<div data-role="content">
<ul id="dynamicList" data-role="listview">
</ul>
</div>
</div>
点击第一个链接后,这是所需的输出:
<div data-role="page" id="home">
<div data-role="content">
<ul data-role="listview">
<li><a class="selected" value="option1" href="#newPage">Option 1</a></li>
<li><a class="selected" value="option1" href="#newPage">Option 2</a></li>
<li><a class="selected" value="option1" href="#newPage">Option 3</a></li>
</ul>
</div>
</div>
<div data-role="page" id="newPage">
<div data-role="content">
<ul id="dynamicList" data-role="listview">
<li>Stuff</li>
</ul>
</div>
</div>
答案 0 :(得分:1)
我为你做了一个实例,看看这里:http://jsfiddle.net/Gajotres/AzXdT/。另外我需要给你一个警告,这个例子只适用于jsFiddle,因为你无法从其他域加载xml。如果要从域(托管服务器)加载xml,请使用以下代码:
$.ajax({
type: "GET",
url: "sites.xml",
dataType: "xml",
success: function(xml) {
}
});
如果可能,请使用JSON而不是XML。原因,复杂的XML可能很大,有很多数据开销。创建JSON的想法是解决这个问题。如果你想尝试一下,我给你做了另一个例子:http://jsfiddle.net/Gajotres/8uac7/。这个例子可以在任何地方使用,所以随意使用它。