2014-01-31 1 views
1

Я динамически создаю диалоговое окно, которое содержит список и добавляет его в body, когда пользователь переходит к определенному data-role=page. После добавления в диалог body я называюjQuery Mobile Listview в Dialog не будет инициализироваться

$('#myDialog').dialog(); 
$('#myList', '#myDialog').listview(); 

Когда я вызываю функцию listview() я получаю следующее сообщение об ошибке:

Uncaught TypeError: Cannot read property 'jQuery19105852627926506102' of undefined 

Единственный способ, который я смог инициализировать мой ListView, чтобы делать это в течение событие pageshow диалогового окна, но затем пользователь фактически видит элементы списка без стилизации до завершения функции listview().

Есть ли способ инициализировать представление списка внутри диалогового окна до того, как будет показано диалоговое окно?

Update: я получаю ту же ошибку, если я использую `$ ('#') MyDialog триггер ('создать')..

+0

Является ли '# myList' * внутри *' myDialog' HTML? – MackieeE

+0

'$ ('# myDialog #myList'). Listview();' this way. В коде вы вызываете '.listview()' как для диалога, так и для listview. – Omar

+0

@MackieeE - '# myList' находится внутри' # myDialog'. – Brian

ответ

1

Диалоги обрабатываются так же, как и страницы. При динамическом добавлении страницы/диалоговом окне в DOM вам не нужно вызывать какие-либо улучшения , так как они инициализируются, а также все виджеты внутри, перед их показом.

Все, что вам нужно, это добавить диалог к ​​<body> или $.mobile.pageContainer, а затем откройте диалоговое окно, используя $.mobile.changePage().

$.mobile.pageContainer.append("dialog HTML markup"); 
$.mobile.changePage("#dialog_ID"); 

Обратите внимание, что вызов методов элементов в пределах страницы, которые не созданы/инициализированы, Enhancement приведет к ошибке. Тем не менее, вы можете обновить виджеты на посещенных/инициализированных страницах.

Demo

 Смежные вопросы

  • Нет связанных вопросов^_^