JqueryMobile обновляет определенный DOM-элемент

Когда мне нужно обновить панель в моем приложении на основе JQuery Mobile, я просто вызываю refresh ().

$('ul').listview().listview("refresh");

Но проблема в том, что все списки обновляются, поскольку ul находится в глобальной области видимости.

Как мне обновить только фактический просмотр listview ?

Я пробовал с идентификатором, но он не работает - другими словами, JQuery Mobile CSS не применяется к этому listview .

$('#myListView').listview().listview("refresh");

список, который не должен обновляться, выглядит так

<ul data-role="none" style="list-style-type:none;">

но это все равно сказывается при звонке ...

$('ul').listview().listview("refresh");

Всего 1 ответ

Автоматический диспенсер мыльной пены от xiaomi.


jQuery Mobile нуждается в атрибуте <ul data-role="listview"> внутри тега ul потому что он знает, какие неупорядоченные списки должны быть улучшены при создании страницы. Если Вы хотите сделать это самостоятельно для динамически добавляемых элементов, Вам необходимо указать то же правило. Пример: что-то вроде $("ul[data-role=listview]") .

Обратите внимание, что $("ul[data-role=listview]").listview() изменяет представление списка, поэтому .listview("refresh") сразу после .listview("refresh") может оказаться ненужным.

Более того, для обхода и улучшения всех недавно добавленных виджетов на странице может быть достаточно enhanceWithin() . Попробуйте это.

В конце концов, если вам нужно узнать, был ли виджет уже расширен или нет, проверьте наличие имени виджета JQM внутри этого элемента:

var isInstance = $.data(element, "mobile-listview");
if(isInstance) {
  $(element).listview("refresh");
} else {
  $(element).listview();
}

Есть идеи?

10000