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

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

Я динамически заполняю <ul data-role="listview">, а затем вызываю location.href="#Results", где находится список, и, наконец, listview('refresh').

Все, что сделано в обратном вызове успеха запроса Ajax с той же страницы. Он работает более или менее, но я получаю следующую ошибку:

Uncaught cannot call methods on listview prior to initialization; attempted to call method 'refresh'

Я думаю, что jQuery mobile еще не создал список. Что я могу сделать?

4b9b3361

Ответ 1

http://jquerymobile.com/demos/1.1.0/docs/api/events.html Вы должны подключиться к событию pageinit. Вы не можете вызывать какие-либо методы JQM до этого. то есть:.

$('#Results').bind('pageinit', function() {
  $('#myListview').listview('refresh');
});

Ответ 3

вы должны проверить, если он уже инициализирован или нет, обновите список, если он инициализирован, иначе создайте триггер следующим образом:

if ( $('#myListview').hasClass('ui-listview')) {
    $('#myListview').listview('refresh');
     } 
else {
    $('#myListview').trigger('create');
     }

Ответ 4

У меня была такая же ошибка. Я решил это, добавив в мой запрос ": visible", поэтому он будет запускаться только в том случае, если список виден.

Итак, ваш код будет выглядеть примерно так:

$('#myListview:visible').listview('refresh');

Работал отлично для меня!

Ответ 5

используйте $.mobile.changePage("#Results"); вместо location.href
на самом деле location.href перезагрузите страницу, чтобы список выглядел разрушенным

И затем listview.refresh

Ответ 6

просто добавьте listview.refresh, отлично подходит для меня, и я использую ajax для загрузки содержимого в div тоже.

document.getElementById("myListview").innerHTML = xmlhttp.responseText;
//works fine on my work
$('#myListview').listview('refresh');

здесь, если мой пост.

jquery mobile ajax загружает содержимое в элемент div, потеряет его стиль css

Я провожу почти 3 часа, чтобы решить свой пост probem.finaly найти ответ здесь.