1

このメッセージを取得:

Error: cannot call methods on checkboxradio prior to initialization; 
attempted to call method 'refresh'

私はここにあるデモに従いました: Ugly Mongrel

これが私のJSの抜粋です:

function(){
  var $pbNum = $('<input checked="checked" id="component-pbnum-'+ _val+ 
        '" name="component-pbnum[]'+
        '" type="checkbox" value="'+ _val+ '" data-mini="true">'+
        '<label for="component-pbnum-'+ _val+ '">'+ _val+ '</label>'),
      $pbNumChk = $($pbNum[0]).on("change", function(ev){
        $pbNum.remove();
        // UNCAUGHT EXCEPTION: "cannot call methods on checkboxradio prior
        // to initialization; attempted to call method 'refresh'"
      });

  $pbnumList.controlgroup("container").append($pbNum);
  $pbNumChk.checkboxradio();
// Have also tried $pbNumChk.checkboxradio().checkboxradio("refresh") 
// as hinted by other answers. No difference.
}

チェックボックスラジオ (この場合はチェックボックス) を動的に追加する必要がありますが、クリック/タップしたときにそれらを削除する機能を提供します。

jQM が jQUI と比較していかに限定的であるように見えるかは、実際にはちょっといらだたしいことです。これらのウィジェットの (文書化された) 「破棄」方法はありませんか? ともかく...

チェックボックスは、私の ControlGroup に問題なく追加されます。フルブラウザでそれらをクリックして削除すると、それらは削除されますが、例外がスローされます。これまでに見つけたものはすべて、これに似たもので答えています: https://stackoverflow.com/a/15180600/258598

これが私が探したものです:http://goo.gl/mVOdo

理解できません。ウィジェットを削除しているときに JS がウィジェットに関するエラーをスローするのはなぜですか?特に、挿入時に初期化されていた場合はどうですか?

[編集]
$pbNum HTML 文字列の小さなタイプミスを修正

4

1 に答える 1

1

jQuery Mobile JSファイルを調べたところ、トリガー時にjQMがクラスをチェックボックスに追加/削除し、メソッドをchange呼び出してマークアップを強化することがわかりました。refresh.checkboxradio('refresh')

.remove()が発生する前に発生するようrefreshですので、削除プロセスを1ms遅らせるrefreshと、チェックボックスが削除される前になります。

stopImmediatePropagation()エラーメッセージを止めるのに役立たなかったことに言及する価値があります.

デモ

コード

$(document).on('change', '.ui-checkbox', function () {
 var box = $(this);
 setTimeout(function () {
  box.remove();
   $('#group').controlgroup().trigger('create');
 }, 1);
});
于 2013-06-09T11:25:10.953 に答える