我把自己的方式编入角落。
我需要在列表上调用listview("refresh")
,但是在调用刷新方法时可能尚未初始化。
有没有办法检查组件是否已初始化?
这是我得到的错误:
无法在初始化之前调用listview上的方法
答案 0 :(得分:21)
初始化listview
窗口小部件时,它会被赋予ui-listview
类,因此我们可以测试此类以查看它是否已初始化:
//select the listview
var $myUL = $('#my-ul-element');
//add a list-item to the listview
$myUL.append('<li>I\'m New!</li>');
//check if the listview has the ui-listview class
if ($myUL.hasClass('ui-listview')) {
//this listview has already been initialized, so refresh it
$myUL.listview('refresh');
} else {
//this listview has not yet been initialized, so it gets initialized
$myUL.listview();//or you can use .trigger('create');
}
这应该有助于缓解您遇到的错误。
此外,如果元素包含.hasClass('[class]')
,则true
函数会返回false
/ [class]
:http://api.jquery.com/hasClass
答案 1 :(得分:4)
尝试
$list.listview();
$list.listview('refresh');
答案 2 :(得分:0)
对我来说,此消息的解决方案是将data-role="listview"
添加到我的ul
元素。然后我可以在事件处理程序中使用方法.listview('refresh')
。
答案 3 :(得分:-1)
你可以简单地创建一个全局变量
var is_mobile_init = false;
位于脚本的顶部。然后在包含jquery mobile之后将其设置为true。
然后在刷新之前,
if (is_mobile_init)
$myUL.listview('refresh');
这样,您不需要跟踪所有各种类,而且直观