Некоторые заметки; эта строка не нуждается в вызове функции .end()
, который используется для возврата к предыдущему выбору, и вы ничего не делаете с выбором:
$("#cutpoint_models_mobile").find("li").remove().end();
Должен измениться на:
$("#cutpoint_models_mobile").find("li").remove();
Добавление каждого LI требует больших затрат ресурсов ЦП, лучшей альтернативой является либо создание строки, либо создание массива LI.
Изменение:
$.each(data.Data, function () {
$("#cutpoint_models_mobile").append('<li><a href="#">' + this + '</a></li>');
});
Кому:
var output = [];
for (var i = 0, len = data.Data.length; i < len; i++) {
output[output.length] = '<li><a href="#">' + data.Data[i] + '</a></li>';
}
$("#cutpoint_models_mobile").append(output.join(''));
Используемый мной цикл for
также работает быстрее, чем $.each()
(хотя $.each()
немного быстрее, чем $(<selector>)).each()
и for (a in b)
).
Теперь перейдем к вашему вопросу.
Вы должны вручную обновить listview
виджеты (и все остальные виджеты), если вы обновите их структуру. Вы можете сделать это с помощью функции .listview()
, передав ей строку «refresh». Так что пример чуть выше этого получился бы так:
var output = [];
for (var i = 0, len = data.Data.length; i < len; i++) {
output[output.length] = '<li><a href="#">' + data.Data[i] + '</a></li>';
}
$("#cutpoint_models_mobile").append(output.join('')).listview('refresh');
Документация для listview
виджетов находится здесь: http://jquerymobile.com/demos/1.0/docs/lists/docs-lists.html (раздел об обновлении listview
находится внизу страницы)
UPDATE
Иногда вы сталкиваетесь с проблемой незнания, была ли инициализирована listview
или нет. Вы можете проверить наличие класса .ui-listview
в элементе <ul>
, если он существует, то listview
уже инициализирован:
var output = [],
$listview = $("#cutpoint_models_mobile");
for (var i = 0, len = data.Data.length; i < len; i++) {
output[output.length] = '<li><a href="#">' + data.Data[i] + '</a></li>';
}
$listview.append(output.join(''))
if ($listview.hasClass('ui-listview')) {
$listview.listview('refresh');
} else {
$listview.trigger('create');
}