Динамическое обновление содержимого элемента div занимает две или три попытки - PullRequest
0 голосов
/ 05 августа 2011

Я пытаюсь обновить содержимое div, но это не всегда работает. Я не уверен, относится ли это к моей проблеме, но я использую jquery mobile.

Справочная информация:

У меня есть меню выбора, которое используется для выбора местоположения. У меня также есть кнопка, которая используется для получения информации о выбранном месте. Ajax используется для извлечения данных, которые отображаются внутри элемента div на моей странице. Я обнаружил, что мне нужно дважды нажать кнопку, чтобы обновить элемент div. Как ни странно, если я добавляю предупреждение непосредственно перед обновлением div, он работает нормально (т.е. мне нужно нажать кнопку только один раз).

Код:

$( function() {
  $("#weather_submit").click(function(){
    $.mobile.pageLoading();
    var formData = $("#getWeatherForm").serialize();
    $.ajax({
      type: "POST",
      url: "weather.php",
      cache: false,
      data: formData,
      success: onSuccessWeather,
      error: onError
    });
    return false;
  });
});

function onError(data, status) {
  $.mobile.pageLoading( true );
  alert('error');
}

function onSuccessWeather(data, status) {
  $.mobile.pageLoading( true );
  //alert(data);  // if I use this line of code I never have a problem (i.e. the weatherSummary div updates appropriately
  data = $.trim(data);
  $("#weatherSummary").html(data);
}

Первоначально я обнаружил эту проблему, используя мой Android EVO, но я только что попробовал Firefox, и это тоже случается.

Я подозреваю, что это связано с тем, что .html () по какой-то причине не выполняет свою работу должным образом.

Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 05 августа 2011

Попробуйте:

$("#page_id_name").page();

Но я также думаю, что в обновлении Beta 2 есть новый метод:

Новое событие «создать»: легко улучшить все виджеты одновременно

Хотя плагин страницы больше не вызывает каждый плагин специально, он отправляет событие «pagecreate», которое большинство виджетовиспользовать для автоматической инициализации себя.Пока на скрипт плагина виджета ссылаются, он будет автоматически улучшать любые экземпляры виджетов, которые он найдет на странице, как и раньше.Например, если плагин selectmenu загружен, он улучшит любые выборки, которые он найдет на вновь созданной странице.

Эта структура теперь позволяет нам добавлять новое событие создания, которое может запускаться на любом элементе, сохраняя васзадача ручной инициализации каждого плагина, содержащегося в этом элементе.До сих пор, если разработчик загружал контент через Ajax или динамически генерируемую разметку, ему нужно было вручную инициализировать все содержащиеся плагины (кнопка просмотра списка, выбор и т. Д.), Чтобы улучшить виджеты в разметке.

Теперь нашСобытие handy create инициализирует все необходимые плагины внутри этой разметки, так же, как работает процесс улучшения создания страницы.Если вам нужно было использовать Ajax для загрузки в блок HTML-разметки (скажем, форму входа в систему), вы можете запустить create, чтобы автоматически преобразовать все содержащиеся в нем виджеты (в данном случае входы и кнопки) в расширенные версии.Код для этого сценария будет выглядеть следующим образом:

$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );

Поэтому, если вы обновитесь до Beta 2, попробуйте что-то вроде этого (не проверено):

$("#weatherSummary").html(data).trigger( "create" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...