Опция jquery mobile не обновляется при обновлении - PullRequest
1 голос
/ 14 марта 2012

При использовании jQueryMobile, когда я изменяю содержимое выбранного виджета, а затем вызываю «обновить» его, текст выбранной опции не изменяется. Вот сценарий ...

Виджет «Выбрать» уже существует в div страницы. Когда пользователь переходит на этот экран, параметры создаются динамически на основе кнопки, выбранной им для перехода на эту страницу. Этот список опций построен и добавлен согласно

$('#searchReasonList').append(optionList)

В первый раз на новой странице все работает хорошо. Когда они уходят и возвращаются, я делаю

$('#searchReasonList').empty()
Затем я строю правильный список опций и делаю то же самое добавление и вызываю:
$('#searchReasonList').selectmenu('refresh',true)

Собственный выбор действительно обновлен, и я могу выбрать один из вариантов. Однако выбранная опция не отображается. Виден только заполнитель.

Для отображения расширенной разметки:

<div class="ui-select">
  <div class="ui-btn ui-btn-icon-right ui-btn-corner-all ui-shadow ui-btn-up-c" data-theme="c">
    <span class="ui-btn-inner ui-btn-corner-all">
      <span class="ui-btn-text">Select Reason</span>
      <span class="ui-icon ui-icon-arrow-d ui-icon-shadow"></span>
    </span>

    <select id="searchReasonList" name="searchReasonList" data-placeholder="true">
      <option value="">Select Reason</option>
      <option value="1">Option 1</option>
      <option value="2">Option 2</option>
    </select>
  </div>
</div>

Это тот тег span с class='ui-btn-text', который не обновляется с меткой выбранного параметра. Это просто остается «Причиной поиска», которая является меткой моего заполнителя.

Есть ли что-то еще, что нужно сделать?

1 Ответ

7 голосов
/ 15 марта 2012

Используя jQuery 1.0.1 (последняя стабильная версия в настоящее время), вы можете использовать .selectmenu('refresh') для обновления виджета выбора.

$('select').empty().append('<option value="foo">Bar</option>').selectmenu('refresh');

Вот демонстрационная версия: http://jsfiddle.net/4Thzt/

Когда вы используете $('select').selectmenu('refresh', true); (обратите внимание на , true), вы заставляете виджет не только обновляться, но и перестраиваться, что всегда будет отображать текст заполнителя. Источник: http://jquerymobile.com/demos/1.1.0-rc.1/docs/forms/selects/methods.html

...