我正在动态创建一个对话框,其中包含一个列表视图,并在用户导航到特定body
时将其附加到data-role=page
。将对话框追加到body
后,我致电
$('#myDialog').dialog();
$('#myList', '#myDialog').listview();
当我调用listview()
函数时,我收到以下错误:
Uncaught TypeError: Cannot read property 'jQuery19105852627926506102' of undefined
我能够初始化listview的唯一方法是在对话框的pageshow
事件期间执行此操作,但随后用户实际看到listview项目而没有样式,直到listview()
函数为完整。
有没有办法在对话框显示之前在对话框中初始化listview?
更新 如果我使用`$('#myDialog'),我会得到同样的错误。触发器('create')。
答案 0 :(得分:1)
对话框的处理方式与页面相同。将页面/对话框动态添加到DOM中时,在显示它们之前,不需要调用任何类型的增强,因为它们会被初始化,以及其中的所有小部件。
您只需将对话框附加到<body>
或$.mobile.pageContainer
,然后使用$.mobile.changePage()
打开对话框。
$.mobile.pageContainer.append("dialog HTML markup");
$.mobile.changePage("#dialog_ID");
请注意,在页面中未创建/初始化的元素上调用增强方法将导致错误。但是,您可以在访问/初始化页面上刷新小部件。
<强> Demo 强>