Jquery移动列表视图 - 检查初始化完成

时间:2012-02-29 03:30:48

标签: jquery listview jquery-mobile

我把自己的方式编入角落。

我需要在列表上调用listview("refresh"),但是在调用刷新方法时可能尚未初始化。

有没有办法检查组件是否已初始化?

这是我得到的错误:

  

无法在初始化之前调用listview上的方法

4 个答案:

答案 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');

这样,您不需要跟踪所有各种类,而且直观