Обновление страницы для мобильных устройств JQuery не работает [дубликат]

Добавьте эти две строки в зависимости от зависимостей

compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'

, затем

useLibrary 'org.apache.http.legacy'

под андроидом

20
задан Matt Ball 5 October 2011 в 15:40
поделиться

6 ответов

Пожалуйста, внимательно посмотрите здесь: http://jquerymobile.com/test/docs/api/methods.html

$.mobile.changePage() изменить с одной страницы к другому, а параметр может быть URL-адресом или объектом страницы. (только #result также будет работать)

$.mobile.page() больше не рекомендуется, используйте .trigger( "create"), см. также: Функция JQuery Mobile .page () вызывает бесконечный цикл?

Важно: Создать против обновления: важное различие

Обратите внимание, что существует важное различие между методом создания события и обновления, который есть у некоторых виджетов. Событие create подходит для улучшения сырой разметки, содержащей один или несколько виджетов. Метод обновления, который некоторые виджеты должны использовать на существующих (уже улучшенных) виджетах, которые были обработаны программно, и чтобы пользовательский интерфейс обновлялся, чтобы соответствовать.

Например, если у вас была страница, на которой вы динамически добавили новый неупорядоченный список с атрибутом data-role = listview после создания страницы, инициируя создание в родительском элементе этого списка, превратит его в виджет в стиле списка. Если затем было добавлено больше элементов списка, вызов метода refresh refresh обновил бы только эти новые элементы списка в улучшенном состоянии и оставил бы существующие элементы списка нетронутыми.

$.mobile.refresh() не существует, я думаю

Итак, что вы используете для своих результатов? Список? Затем вы можете обновить его, выполнив:

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

Пример: http://operationmobile.com/dont-forget-to-call-refresh-when-adding-items-to-your -jquery-mobile-list /

В противном случае вы можете сделать:

$('#result').live("pageinit", function(){ // or pageshow
    // your dom manipulations here
});
16
ответ дан Community 19 August 2018 в 03:48
поделиться
  • 1
    Спасибо за объяснение различия между созданием и обновлением. Для этого простое объяснение выглядело высоко и низко. – Craig 5 February 2012 в 19:45

Я решил эту проблему, используя атрибут data-cache = "false" в div страницы на страницах, которые я хотел обновить.

<div data-role="page" data-cache="false">
/*content goes here*/

</div>

В моем случае это была моя корзина. Если клиент добавил товар в свою корзину, а затем продолжил покупки, а затем добавил другой товар в свою корзину, страница с корзиной не отображает новый элемент. Если они не обновили страницу. Установка кэша данных в false указывает JQM не кэшировать эту страницу, насколько я понимаю.

Надеюсь, это поможет другим в будущем.

1
ответ дан dherrin79 19 August 2018 в 03:48
поделиться

Этот ответ сделал трюк для меня http://view.jquerymobile.com/master/demos/faq/injected-content-is-not-enhanced.php .

В контексте шаблона с несколькими страницами я изменяю содержимое <div id="foo">...</div> в обработчике javacript «pagebeforeshow» и запускаю обновление в конце скрипта:

$(document).bind("pagebeforeshow", function(event,pdata) {
  var parsedUrl = $.mobile.path.parseUrl( location.href );
  switch ( parsedUrl.hash ) {
    case "#p_02":
      ... some modifications of the content of the <div> here ...
      $("#foo").trigger("create");
    break;
  }
});
0
ответ дан FredP 19 August 2018 в 03:48
поделиться

Я нашел этот поток, который хочет создать кнопку обновления страницы ajax с помощью jQuery Mobile.

@sgissinger получил самый близкий ответ на то, что я искал, но он устарел.

Я обновил для jQuery Mobile 1.4

function refreshPage() {
  jQuery.mobile.pageContainer.pagecontainer('change', window.location.href, {
    allowSamePageTransition: true,
    transition: 'none',
    reloadPage: true 
    // 'reload' parameter not working yet: //github.com/jquery/jquery-mobile/issues/7406
  });
}

// Run it with .on
$(document).on( "click", '#refresh', function() {
  refreshPage();
});
3
ответ дан mfregoe 19 August 2018 в 03:48
поделиться
  • 1
    Я немного улучшил это и удалил событие click после нажатия (добавив .off ()). В противном случае страница обновляется, а во второй раз пользователь нажимает кнопку, событие запускается дважды. – kloarubeek 25 July 2017 в 21:52
  • 2
    изменение отклонено, я предлагаю удалить событие клика после завершения обновления: $ (document) .off (& quot; click & quot ;, & quot; # refresh & quot;). on (& quot; click & quot ;, & quot; # refresh & quot ;, function () {refreshPage ();}); – kloarubeek 28 July 2017 в 11:59

Я опубликовал это на форумах jQuery (надеюсь, это может помочь):

Дайвинг в jQM-коде я нашел это решение. Я надеюсь, что это может помочь другим людям:

Чтобы обновить динамически измененную страницу:

function refreshPage(page){
    // Page refresh
    page.trigger('pagecreate');
    page.listview('refresh');
}

Он работает, даже если вы создаете новые заголовки, navbars или колонтитулы. Я тестировал его с помощью jQM 1.0.1.

7
ответ дан Rubén Norte 19 August 2018 в 03:48
поделиться
  • 1
    Я пытался обновлять стили в списке, а вызов .trigger('create') стилизовал текст и прочее, но не LI выглядел как кнопки, которые я хотел. Использование .trigger('refresh'), похоже, ничего не делало. Но использование .listview('refresh') в моем списке сделало трюк! Благодаря! (Я использую JQM 1.1) – CWSpear 14 May 2012 в 22:53
  • 2
    Я пытаюсь обновить jquery mobile после удаления LI из навигационной панели. Я пробовал ваш код, и он ничего не делает. Есть предположения? – Josh Mouch 7 February 2013 в 02:17
function refreshPage()
{
    jQuery.mobile.changePage(window.location.href, {
        allowSamePageTransition: true,
        transition: 'none',
        reloadPage: true
    });
}

Взято отсюда http://scottwb.com/blog/2012/06/29/reload-the-same-page-without-blinking-on-jquery-mobile/ также тестируется на jQuery Mobile 1.2.0

23
ответ дан Sebastien GISSINGER 19 August 2018 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: