jQuery Mobile: selectmenu () и selectmenu(‘обновить’) создают вложенные выборки

#javascript #jquery #jquery-mobile

#javascript #jquery #jquery-mobile

Вопрос:

У меня возникает масса проблем с jQuery mobile selects и динамическими данными. Я хочу иметь выбор, который я могу включать и отключать и динамически заполнять.

 <select id="selectMobileMenu" onchange="functionMobile()" style="width: 100%" class="mobileSelect"></select>
  

Проблема в том, что когда я сначала отключаю кнопку, чтобы предотвратить ошибку: Uncaught Error: cannot call methods on selectmenu prior to initialization; attempted to call method 'refresh' я получаю 2 вложенных выборки внутри выборки.

         selectMobile = $('[id=*selectMobileMenu]');
        //Ensure the candidateListBox is defined
        if (selectMobile.data("mobile-selectmenu") === undefined) {
            // not initialized yet, lets do so
            selectMobile.selectmenu('refresh');  //<--- Creates nested select
        }
        selectMobile.selectmenu();  //<--- Creates nested select
        selectMobile.selectmenu('disable');
  

Кажется, что всякий раз, когда я вызываю selectmenu() or selectmenu('refresh') , я получаю вложенный select, что проблематично, потому что мне нужно вызвать selectmenu() and selectmenu('refresh') . Я мог бы попытаться удалить все классы ‘ui-disable` (которые работают на некоторых контроллерах, но не на других), но я чувствую, что это сделало бы невероятно хрупкий элемент управления еще более хрупким.

Идеи?

Комментарии:

1. $('.ui-page-active').trigger('create') ?

2. Я действительно решил это, попробовав $('select#selectMobileMenu').selectmenu(); . Я должен обновить ответ, но я хотел посмотреть, есть ли другие способы

Ответ №1:

В итоге это сработало для меня:

 selectMobile = $('select#selectMobileMenu');

if (selectMobile.data("mobile-selectmenu") === undefined) {
    selectMobile.selectmenu('refresh'); 
}
selectMobile.selectmenu();  
selectMobile.selectmenu('disable');