jQuery Mobile:在初始化之前,uncaught无法在checkboxradio上调用方法;试图调用方法'刷新'

时间:2012-10-02 14:01:44

标签: jquery-mobile refresh uncaught-exception

我正在解决这个问题。 这些是我使用的代码并引起了上述问题。

$(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文档了,我似乎很不清楚])。
  3. 致以最诚挚的问候,非常感谢您的回答。

2 个答案:

答案 0 :(得分:15)

您使用的是哪个版本的jQueryMobile?您可能需要使用pageinit而不是pagecreatejQueryMobile documentation的这一部分谈到了选择。

对于重新绘画或创作,solution that @Taifun指出,看起来像:

$("input[type='radio']").checkboxradio();
$("input[type='radio']").checkboxradio("refresh");
对我来说没问题,但它没有正确地绘制控件100%。单选按钮没有涂上圆角的边缘。

在我看到您的代码之前,我read here您可以在容器对象上调用.trigger('create'),它对我有效。你这样做但是在pagecreate内,而不是pageinit

答案 1 :(得分:0)

我实际上使用的是 flipswitch checkbox

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

所以had to do this

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

查看我的完整答案here