REMOVING checkboxradio时jQueryMobile未捕获异常

时间:2013-06-08 19:29:37

标签: jquery jquery-mobile jquery-mobile-checkbox

获取此消息:

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

我需要动态添加checkboxradio(在这种情况下为复选框),但是可以在点击/点击时删除它们。

有点令人沮丧的是jQM似乎与jQUI相比有限。没有(记录)这些小部件的“破坏”方法?总之...

复选框添加到我的ControlGroup就好了。当我单击以在完整浏览器中删除它们时,它们将被删除,但会引发异常。到目前为止,我发现的所有东西都回答了与此类似的东西: https://stackoverflow.com/a/15180600/258598

以下是我查找的内容:http://goo.gl/mVOdo

我不明白。当我删除它时,为什么JS会抛出关于窗口小部件的错误 - 特别是当它在插入时被初始化时?

[编辑]
修复了$ pbNum HTML字符串中的一个小错误

1 个答案:

答案 0 :(得分:1)

我浏览了jQuery Mobile JS文件,发现当change触发时,jQM会在复选框中添加/删除类,然后调用refresh方法.checkboxradio('refresh')来增强标记。< / p>

似乎.remove()发生在refresh之前,因此如果您将删除过程延迟1毫秒,refresh将在删除复选框之前。

值得一提的是stopImmediatePropagation()没有帮助停止错误消息。

  

<强> Demo

<强>代码

$(document).on('change', '.ui-checkbox', function () {
 var box = $(this);
 setTimeout(function () {
  box.remove();
   $('#group').controlgroup().trigger('create');
 }, 1);
});