В инфраструктуре jQuery Mobile существует множество событий страницы, из-за которых сложно определить, какой из них лучше связать. Я привязываюсь к событию pageshow
, потому что к тому времени, когда оно запускается, DOM готов (jQuery Mobile все инициализировал).
Однако всякий раз, когда у меня возникают проблемы с синхронизацией refresh
виджета jQuery Mobile, я проверяю, инициализирован ли он, и запускаю необходимый код для initialize
или refresh
виджета.
$(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
.