我正在使用 jquery.mobile-1.0rc3 版本开发平板电脑应用程序。以前,我在另一个应用程序上使用了 jquery.mobile-1.0a4.1 版本,并且可以通过执行 myListview.listview(“刷新”)来刷新列表视图
我在使用新的jquery.mobile-1.0rc3版本时遇到了一些问题。是否可以使用新的jquery.mobile-1.0rc3版本?
非常感谢。
以下是一些代码:
var lists = $( '#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList' );
lists.empty();
/* Fill the lists with jquery template */
lists.listview( "refresh" );
错误:
未捕获的异常:无法在listview之前调用方法 初始化;试图调用方法'刷新'
答案 0 :(得分:3)
根据代码运行的时间,它可能在jQuery Mobile初始化过程之前运行。默认情况下,jsFiddle在load
事件触发后运行代码,因此DOM全部设置并且jQuery Mobile已完成初始化。如果你改变@Phill Pafford的jsFiddle(http://jsfiddle.net/qSmJq/3/)来运行“no wrap(body)”而不是“onLoad”,那么你得到的是你报告的错误。因此,我建议您删除lists.listview('refresh');
行,或将代码放在document.ready
或pageshow/pagecreate
事件处理程序中:
var lists = $( '#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList' );
lists.empty();
/* Fill the lists with jquery template */
//lists.listview( "refresh" );
以下是浏览器解析后立即运行代码的方法:http://jsfiddle.net/jasper/qSmJq/5/
或者:
$(function () {
var lists = $( '#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList' );
lists.empty();
/* Fill the lists with jquery template */
lists.listview( "refresh" );
}
这是一个用于将代码包装在document.ready
事件处理程序中的jsfiddle:http://jsfiddle.net/jasper/qSmJq/4/
或者:
$('#my-page-id').on('pagecreate', function () {
var lists = $( '#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList' );
lists.empty();
/* Fill the lists with jquery template */
//lists.listview( "refresh" );
}
以下是使用pageshow
事件的jsfiddle:http://jsfiddle.net/jasper/qSmJq/6/
以下是使用pagecreate
事件的jsfiddle:http://jsfiddle.net/jasper/qSmJq/7/
旁注:如果您想检测jQuery Mobile是否已初始化某个元素,您可以检查该元素上的jQuery Mobile特定类:
$(function () {
//cache lists
var lists = $( '#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList' );
//iterate through the lists
lists.each(function (index, value) {
//cache this specific list
var $value = $(value);
/*add rows to this listview here*/
//check if the listview has been initialized by jQuery Mobile by checking for the existence of the `ui-listview` class
if ($value.hasClass('ui-listview')) {
//since the class was found, refresh the already initialized element
$value.listview('refresh');
} else {
//the class was not found, so initialize the widget
$value.trigger('create');
}
});
});