Вот моя проблема. У меня есть несколько жестко закодированных псевдостраниц в моем указателе. Некоторые заполнены контентом, некоторые пустыми, которые будут заполнены при взаимодействии с пользователем только ajax. Этот контент ajax содержит HTML-списки. Когда они загружаются, у них нет приятного мобильного вида jquery, поэтому мне нужно вызвать метод .listview (), чтобы инфраструктура jqm проанализировала его в моем обратном вызове ajax. Вот где я часто получаю эту ошибку JS:
Uncaught TypeError: Невозможно прочитать свойство 'jQuery162027575719612650573' из неопределенного
Число никогда не бывает одинаковым ...
Интересно, использую ли я правильный способ для анализа списка после того, как страница загрузит содержимое ajax. ошибка, кажется, вызвана, когда есть небольшая задержка для загрузки, и событие завершения запущено слишком рано, и мой просмотр списка еще не находится в DOM в тот момент, только предположение. Каков рекомендуемый способ инициализации списка после вызова ajax?
Это очень прискорбно, потому что, когда возникает ошибка js, кажется, что она останавливает дальнейшее выполнение js ...
так вот моя пустая псевдостраница:
<div data-role="page" id="playlist" data-add-back-btn="true">
<div data-role="header">
<h1><g:message code="pd.playlist" /></h1>
</div>
<div data-role="content"></div>
</div>
прямо под ним есть тег script с вызовом ajax bind ajax на страницах шоу для активации просмотра списка
<script type="text/javascript">
$('#playlist').bind('pageshow', function () {
$.ajax({
url: "updatePlaylistTemplate.gsp",
error:function(x,e){handleAjaxError(x,e);},
beforeSend:function(){$.mobile.showPageLoadingMsg();},
complete:function(){
$.mobile.hidePageLoadingMsg();
$('[data-role="listview"]').listview(); //re-active all listview
},
success:function(data, textStatus, jqXHR){
$('#playlist').find('[data-role="content"]').html(data);
}
});
});
</script>
updatePlaylistTemplate возвращает это (извлечение):
<ul data-role="listview" data-split-theme="d">
<li data-icon="delete">
<a href="javascript:void(0);" onclick="loadGet('urlToRemoveProdiver',$('#playlist'),doOnCallBack);">Provider: Bell</a>
</li>
<li data-icon="delete">
<a href="javascript:void(0);" onclick="loadGet('urlToRemoveChannel',$('#playlist'),doOnCallBack);">Rock - Classic Rock</a>
</li>
<li data-icon="refresh" data-theme="e"><a href="javascript:void(0);" onclick="loadGet('urlToReloadPlaylist',$('#playlist'),doOnCallBack)">Refresh list</a></li>
<li data-role="list-divider">Next song</li>
<li>
<a href="urlToViewSongInfo">
<img src="images/song.gif" />
<h3>Albert Flasher</h3>
<p>The Guess Who</p>
<p class="ui-li-aside">Next</p>
</a>
</li>
<li data-role="list-divider">Now playing</li>
<li>
<a href="urlToviewSongInfo">
<img src="images/song.gif" />
<h3>Crime of the Century</h3>
<p>Supertramp</p>
<p class="ui-li-aside">14h49</p>
</a>
</li>
<li data-role="list-divider">Previous songs</li>
<li>
<a href="urlToViewSongInfo">
<img src="images/song.gif"" />
<h3>Desperado</h3>
<p>Alice Cooper</p>
<p class="ui-li-aside">14h45</p>
</a>
</li>
[...]
</ul>