JqueryMobile обновляет определенный DOM-элемент - PullRequest
0 голосов
/ 17 мая 2019

Когда мне нужно обновить панель в моем приложении на основе 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 Ответ

0 голосов
/ 17 мая 2019

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

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

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

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

var isInstance = $.data(element, "mobile-listview");
if(isInstance) {
  $(element).listview("refresh");
} else {
  $(element).listview();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...