以下是我动态创建和增强页面的代码。类似的模式已经适用于许多其他类型,例如文本字段,按钮,网格视图等。但我发现它无法与listview一起使用。
$(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')行上失败;
答案 0 :(得分:1)
我自己找到了解决方案。如果我更换了这条线,它的工作正常,
$page.trigger('create');
用,
$page.page();
$content.find( ":jqmData(role=listview)" ).listview();
但是,我仍然不明白为什么。我认为前者是一种更新,更简单的语法来取代后者。单次调用$ page.trigger('create');可以一次性增强整个页面。有谁知道这两者的区别?