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, это кажется мне неясным]).

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


person Mysteltainn    schedule 02.10.2012    source источник
comment
вероятно, это решение может помочь и вам...   -  person Taifun    schedule 09.11.2012
comment
@Taifun - спасибо, что указали мне на решение   -  person Aaron D    schedule 03.03.2013


Ответы (2)


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

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

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

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

person Aaron D    schedule 02.03.2013

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

<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" ) 

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

person SharpC    schedule 29.05.2021