Подтвердить что ты не робот

Jquery mobile listview - проверка инициализации завершена

Я закодировал свой путь в угол.

Мне нужно вызвать listview("refresh") в списке, однако он, возможно, не был инициализирован в момент, когда я вызываю метод обновления.

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

Это ошибка, которую я получаю:

не может вызывать методы в представлении списка до инициализации

4b9b3361

Ответ 1

Когда инициализируется виджет listview, он получает класс ui-listview, поэтому мы можем проверить этот класс, чтобы убедиться, что он был инициализирован:

//select the listview
var $myUL = $('#my-ul-element');

//add a list-item to the listview
$myUL.append('<li>I\'m New!</li>');

//check if the listview has the ui-listview class
if ($myUL.hasClass('ui-listview')) {

    //this listview has already been initialized, so refresh it
    $myUL.listview('refresh');
} else {

    //this listview has not yet been initialized, so it gets initialized
    $myUL.listview();//or you can use .trigger('create');
}

Это должно помочь уменьшить полученную ошибку.

Кроме того, функция .hasClass('[class]') возвращает true/false, если элемент имеет [class]: http://api.jquery.com/hasClass

Ответ 2

Try

$list.listview();
$list.listview('refresh');

Ответ 3

Для меня решение этого сообщения состояло в том, чтобы добавить data-role="listview" в мой элемент ul. Тогда я мог бы использовать метод .listview('refresh') в обработчиках событий.

Ответ 4

вы можете просто создать глобальную переменную

var is_mobile_init = false;

в верхней части ваших скриптов. затем установите значение true после включения jQuery mobile.

затем перед обновлением записи

if (is_mobile_init)
    $myUL.listview('refresh');

таким образом, вам не нужно отслеживать все различные классы и интуитивно понятным