我在更改其中的列表项后尝试刷新listview
,但它仍然没有显示消息:
“Uncaught在初始化之前无法调用listview上的方法; 试图调用方法'刷新'“。
列表是具有data-role="dialog"
属性的div中的无序列表。该列表包含data-role="listview"
。更新后,如果我拨打$('#theULInQuestion').listview('refresh')
,我会收到错误消息。是什么给了什么?
谢谢, 罗布
答案 0 :(得分:4)
jQuery Mobile框架中有很多页面事件,这使得很难确定哪个页面事件是正确的绑定。我绑定到pageshow
事件,因为在事件触发时,DOM已准备就绪(jQuery Mobile已初始化所有内容)。
但是,每当我遇到jQuery Mobile小部件的refresh
计时问题时,我都会检查它是否已经初始化并运行必要的代码到initialize
或refresh
窗口小部件。
$(document).delegate('#my-dialog-id', '<page-event>', function () {
var $the_ul = $('#theULInQuestion');
//add your rows to the listview here
$the_ul.append('<li>a row</li><li>another row</li>');
if ($the_ul.hasClass('ui-listview')) {
$the_ul.listview('refresh');
} else {
$the_ul.trigger('create');
}
});
每个jQuery Mobile小部件都有特定的类,这些类被添加到该类型的小部件中。因此,如果窗口小部件具有jQuery Mobile类,则可以检查(在追加行之后);如果确实如此,那么refresh
,如果它没有initialize
它。
这是一个jsfiddle:http://jsfiddle.net/jasper/urTeW/1/
请注意,您可以将条件语句放置在代码中的任何位置refresh
/ initialize
,而不必在page-event
触发时发生。