6

我正在努力解决这个问题。这些是我使用并导致上述问题的代码。

$(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 Docs,我觉得它似乎很不清楚])。

最好的问候,非常感谢您的回答。

4

2 回答 2

16

您使用的是什么版本的 jQueryMobile?您可能需要使用pageinit而不是pagecreate. jQueryMobile 文档的这一部分讨论了这些选择。

对于重绘或创作,@Taifun指出的解决方案,如下所示:

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

在我看到你的代码之前,我在这里读到你可以调用.trigger('create')容器对象,它对我有用。您正在这样做,但在里面pagecreate而不是 in pageinit

于 2013-03-02T23:22:38.317 回答
0

我实际上使用的是翻转开关复选框

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

在这里查看我的完整答案。

于 2021-05-29T09:48:54.517 回答