Lis*_*ker 2 json jquery-mobile
并感谢您查看我的问题.我是HTML,JQuery和JSon的新手.我正在尝试通过一些在线教程和www.lynda.com培训自学.我正在尝试制作一个动态显示页面上的术语列表的词汇表,单击时会在标题中显示该术语,并在下面显示该定义.经过搜索和实验,我已经取得了进展,我已经从JSon对象填充了ul并链接到显示页面.但我不知道如何让显示页面正常工作.我认为答案就在这里:http://jquerymobile.com/demos/1.1.1/docs/pages/page-dynamic.html但我似乎无法将它拉下来,即使在Dreamweaver中也是如此.
这是JSFiddle:http://jsfiddle.net/LParker/PSntK/3/
HTML:
<!-- Glossary -->
<div data-role="page" id="glossary">
<div data-role="header">
<h3>
Glossary
</h3>
</div>
<ul data-role='listview' data-inset='true' id='resultsList'>
<!-- keep empty for dynamically added items -->
</ul>
</div>
<!-- display -->
<div data-role="page" id="display">
<div data-role="header">
<h3>
Name Goes Here
</h3>
</div>
<div data-role="content">
<div>Definition goes here</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var jsonObject = {
"results": [{
"term": "Term One",
"definition": "This is the definition for Term Two",
},
{
"term": "Term Two",
"definition": "This is the definition of Term Two",
}, {
"term": "Term Three",
"definition": "This is the definition for Term Three",
}],
"ok": "true"
}
var resultLength = jsonObject.results.length;
var listItems = [];
for (var i = 0; i < resultLength; i++) {
var term = jsonObject.results[i].term;
//Add result to array
listItems.push("<li><a href='#display'>" + term + " </a></li>");
}
//Append array to list and refresh
$('#resultsList').append(listItems.join(' '));
$('#resultsList').listview('refresh');
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
首先,让我们先解决一些问题:
definitionjson对象的每个成员之后删除额外的逗号.#resultsList列表视图放在<div data-role="content"></div>容器中.#display页面导航到#glossary页面的方法,例如通过<a data-role="button" data-rel="back" data-icon="back">Back</a>在#display页面标题中添加标准jQM后退按钮.为简洁起见,我将您的变量重命名jsonObject为json.
您可以以更简洁的方式填充列表视图:
$.each(json.results, function(i, term){
$('#resultsList').append('<li><a href="#display">' + term.term + '</a></li>')
});
$('#resultsList').listview('refresh');
Run Code Online (Sandbox Code Playgroud)
现在在特定情况下,恕我直言,你不需要注入页面(虽然它当然可能)你可以只#display在pagebeforeshow事件中改变页面内容.
为此,由于您的json对象全局可用,您只需获取单击列表项的索引,将其传递给您的#display页面,使用它来访问json对象的结果数组以提取并显示术语及其定义.传递索引的最简单方法是使用您在click事件处理程序中设置的全局变量.
var currentItem = 0;
...
$('#resultsList li').click(function(){
currentItem = $(this).index();
});
Run Code Online (Sandbox Code Playgroud)
现在pagebeforeshow你做的事情
$('#display').on('pagebeforeshow', function(){
$(this).find('[data-role=header] .ui-title').text(json.results[currentItem].term);
$('#definition').html(json.results[currentItem].definition);
});
Run Code Online (Sandbox Code Playgroud)
最后这里是为你工作的jsFiddle.
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |