如何刷新jquery移动列表视图

时间:2011-12-02 19:28:15

标签: jquery-mobile

我在更改其中的列表项后尝试刷新listview,但它仍然没有显示消息:

  

“Uncaught在初始化之前无法调用listview上的方法;   试图调用方法'刷新'“。

列表是具有data-role="dialog"属性的div中的无序列表。该列表包含data-role="listview"。更新后,如果我拨打$('#theULInQuestion').listview('refresh'),我会收到错误消息。是什么给了什么?

谢谢, 罗布

1 个答案:

答案 0 :(得分:4)

jQuery Mobile框架中有很多页面事件,这使得很难确定哪个页面事件是正确的绑定。我绑定到pageshow事件,因为在事件触发时,DOM已准备就绪(jQuery Mobile已初始化所有内容)。

但是,每当我遇到jQuery Mobile小部件的refresh计时问题时,我都会检查它是否已经初始化并运行必要的代码到initializerefresh窗口小部件。

$(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触发时发生。