jQuery Mobile: Uncaught не может вызывать методы для checkboxradio до инициализации; попытался вызвать метод "обновить"

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

$(document).ready(function () {
    $("#at-site-btn").bind("tap", function () {
        $.mobile.changePage("view/dialog/at-site.php", { transition:"slidedown", role:"dialog" });
    });
    $('#at-site-page').live('pagecreate', function(){
        var $checked_emp    = $("input[type=checkbox]:checked");
        var $this           = $(this);
        var $msg            = $this.find("#at-site-msg");
        $checked_emp.appendTo($msg);
        $checked_emp.trigger('create');
        $msg.trigger('create');
        $(document).trigger('create');
        $this.trigger('create');
        $("html").trigger('create');

    });
});

Объяснение:

Приведенный выше код находится в файле с именем hod.php. Файл содержит ряд флажков. Эти флажки и должны быть отмечены одновременно, и когда я нажал кнопку # at-site-btn, появился at-site.php (в виде диалога) и отобразил все отмеченные флажки.

Вот где возникла проблема. Когда я нажимал кнопку "Назад" в диалоговом окне, чтобы вернуться на предыдущую страницу, и пытался снять эти флажки, появляется ошибка, как указано в заголовке. В моем коде нет вызовов "обновить метод", поэтому я не вижу способа это исправить.

  1. Кто-нибудь может предложить, пожалуйста, способ решения этой проблемы?
  2. Я правильно это использую? (Я очень новичок в jQuery Mobile. Если есть какие-то концепции использования JQM, пожалуйста, объясните мне [я пробовал читать Документы JQM, мне это кажется неясным]).

С наилучшими пожеланиями и большое спасибо за ваши ответы.

2 ответа

Решение

Какую версию jQueryMobile вы используете? Возможно, вам придется использовать pageinit вместо pagecreate, Эта часть документации jQueryMobile рассказывает о выборе.

Для перерисовки или создания, решение, которое указал @Taifun, выглядит так:

$("input[type='radio']").checkboxradio();
$("input[type='radio']").checkboxradio("refresh");
работал хорошо для меня, но он не рисовал элементы управления на 100% правильно. Радиокнопки не окрасили края закругленными углами.

Прежде чем я увидел ваш код, я прочитал здесь, что вы можете позвонить .trigger('create') на объекте контейнера, и у меня это сработало. Вы делаете это, но внутри pagecreate вместо того, чтобы в pageinit,

На самом деле я использовал флажок переключателя :

      <div class="some-checkbox-area">
    <input type="checkbox" data-role="flipswitch" name="flip-checkbox-lesson-complete"
           data-on-text="Complete" data-off-text="Incomplete" data-wrapper-class="custom-size-flipswitch">
</div>

так что пришлось сделать это :

      $("div.ui-page-active div.some-checkbox-area div.ui-flipswitch input[type=checkbox]").attr("checked", true).flipswitch( "refresh" ) 

Смотрите мой полный ответ здесь .

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