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 (в виде диалога) и отобразил все отмеченные флажки.
Вот где возникла проблема. Когда я нажимал кнопку "Назад" в диалоговом окне, чтобы вернуться на предыдущую страницу, и пытался снять эти флажки, появляется ошибка, как указано в заголовке. В моем коде нет вызовов "обновить метод", поэтому я не вижу способа это исправить.
- Кто-нибудь может предложить, пожалуйста, способ решения этой проблемы?
- Я правильно это использую? (Я очень новичок в jQuery Mobile. Если есть какие-то концепции использования JQM, пожалуйста, объясните мне [я пробовал читать Документы JQM, мне это кажется неясным]).
С наилучшими пожеланиями и большое спасибо за ваши ответы.
2 ответа
Какую версию jQueryMobile вы используете? Возможно, вам придется использовать pageinit
вместо pagecreate
, Эта часть документации jQueryMobile рассказывает о выборе.
Для перерисовки или создания, решение, которое указал @Taifun, выглядит так:
работал хорошо для меня, но он не рисовал элементы управления на 100% правильно. Радиокнопки не окрасили края закругленными углами.$("input[type='radio']").checkboxradio();
$("input[type='radio']").checkboxradio("refresh");
Прежде чем я увидел ваш код, я прочитал здесь, что вы можете позвонить .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" )
Смотрите мой полный ответ здесь .