0

这是我必须动态创建和增强页面的代码。类似的模式一直适用于许多其他类型,例如文本字段、按钮、网格视图等。但我发现它不适用于列表视图。

$(document).bind("pagebeforechange", function route(e, data) {
    ...
    $content = $page.children(":jqmData(role=content)");
    var markup = '<ul id="calendarList" data-role="listview"><li>HELLO</li></ul>';
    $content.html(markup);
    $page.trigger('create');
    $.mobile.changePage($page);
});

我总是会收到一条错误消息,例如,

Cannot read property 'jQuery16409763167318888009' of undefined

通过使用 Chrome 调试,我发现它总是在 $page.trigger('create'); 行失败。

4

1 回答 1

1

我自己找到了解决方案。换线就好了

$page.trigger('create');

和,

$page.page();
$content.find( ":jqmData(role=listview)" ).listview();

但是,我仍然不明白为什么。我认为前者是替代后者的更新、更简单的语法。一次调用 $page.trigger('create'); 可以一次增强整个页面。有谁知道这两者的区别吗?

于 2012-09-01T00:03:36.113 回答