Контрольная группа теряет контроль после динамического добавления переключателя - jQuery Mobile

Моя контрольная группа (jquery mobile 1.4) прекрасно воспроизводится при первоначальном динамическом создании группы радио, но когда я добавляю в нее другое радио, кнопки стилизуются, но разделяются. Когда я перезагружаю приложение, они снова вместе.

function showPlaces() {    
    $('#radio-group').empty();

    for(var i = 0; i < connections.length; i++) {
        $('#radio-group').append('<label><input type="radio" name="places" id="' + i + '" />' + place + '</label>');           
    }

    $('input[type=radio]').checkboxradio().trigger('create');
    $('#radio-group').controlgroup().trigger('create');
}

// Функция вызывается при запуске приложения и снова после добавления другого места

Некоторые другие вещи, которые я пробовал:

$("#radio-group").controlgroup("refresh");                                          
$('#radio-group').controlgroup('refresh');
$("[data-role=controlgroup]").controlgroup("refresh");
$('input[type=radio]').checkboxradio('refresh');

Также пробовал.controlgroup('container'), перед.append, но get "не может вызывать методы в controlgroup до инициализации".

Вот HTML:

<form>  
    <fieldset data-role="controlgroup" id="radio-group">
        <!-- Dynamically injected radio buttons go here -->
    </fieldset>
</form> 

1 ответ

Решение

Вам следует .append() предметы в .controlgroup("container") внутри для цикла, а затем увеличить радиокнопки .checkboxradio(),

for(var i = 0; i < connections.length; i++) {
  $('#radio-group')
      .controlgroup("container")
      .append('<label><input type="radio" name="places" id="+i+" />Place</label>');           
}

$("#radio-group")
    .enhanceWithin()
    .controlgroup("refresh");

Вам даже не нужно использовать .checkboxradio()вместо .enhanceWithin() на родительском контейнере.

демонстрация

Другие вопросы по тегам