我有一个jQuery Mobile项目,它分布在不同的文件中,例如
<!DOCTYPE html> <html> <head> <script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" /> <link rel="stylesheet" href="css/custom.css" /> <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script> <script src="js/methods.js"></script> </head> <body> <!-- Termine Page --> <div data-role="page" id="firstPage"> <div data-role="header" data-position="fixed"> <h1>Header 1</h1> ... </div><!-- /navbar --> <div data-role="content"> ... </div> </div> </body> </html> secondPage.html <!DOCTYPE html> <html> <head> <script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" /> <link rel="stylesheet" href="css/custom.css" /> <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script> <script src="js/methods.js"></script> </head> <body> <div data-role="page" id="pageTwo" class="ui-page"> <div data-role="header" data-position="fixed" id="terminDetailSeiteHeader"> <h1>Header 2</h1> </div> <div data-role="content"> <div id="contentToFillWithDynamicListView"></div> </div> </div> </body> </html>
然后,我得到了一个脚本,它应该调用一个PHP-Script并生成一个listview:
function listViewCreation() { var url = 'http://www.myServer.com/myPHP.PHP?someParameters=1&callback=?'; $.getJSON(url,function(data) { $('#contentToFillWithDynamicListView').empty(); var collapsibleList = '<ul data-role="listview">'; var myselfIsIncluded = 0; $.each(data,function(key,value) { collapsibleList += '<li>' + value['displayName'] + '</li>'; }); collapsibleList += '</ul>'; $('#contentToFillWithDynamicListView').html(collapsibleList).trigger('create'); }); }
.trigger(‘create’)导致错误……我错过了什么?
编辑1
listViewCreation的调用方式如下:
$("#pageTwo").live("pageshow",function(e,data){ listViewCreation(); });
编辑2
我从不同的服务器获取远程数据,这似乎是错误的原因;但我不知道如何解决它…我正在两个页面上获取数据(1和2);对于它工作的第一页,对于第二页它不…
$.getJSON(url,function(data) { ... }
解决方法
我可以看到你正在使用jQuery mobile的最新稳定版本.
你的问题是
trigger('create');
它不用于jQuery移动列表视图重定制.你应该使用:
.listview('refresh');
代替.不要相信官方的jQM文档,不应该弃用trigger(‘create’).每个jQM小部件都有一个用于刷新它的功能,例如按钮(‘refresh’).
更改页眉,页脚或内容时也不要使用触发器(‘create’),它不起作用,可以在页面上触发pagecreate:
trigger('pagecreate');
编辑:
的情况下:
Uncaught Error: cannot call methods on listview prior to
initialization; attempted to call method ‘refresh’
呼叫:
$('#listviewid').listview().listview('refresh');
第一个调用将初始化它,第二个将调整它的样式.