【发布时间】:2013-06-04 21:07:14
【问题描述】:
收到此消息:
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(在这种情况下为复选框),但提供在单击/点击时将其删除的能力。
与 jQUI 相比,jQM 的局限性实际上有点令人沮丧。没有(记录)这些小部件的“销毁”方法?总之……
复选框添加到我的控制组就好了。当我在完整浏览器中单击以删除它们时,它们会被删除,但会引发异常。到目前为止,我发现的所有内容都与以下内容类似: https://stackoverflow.com/a/15180600/258598
这就是我要找的东西:http://goo.gl/mVOdo
我不明白。为什么当我删除它时 JS 会抛出一个关于小部件的错误 - 特别是当它在插入时被初始化时?
[编辑]
修复了 $pbNum HTML 字符串中的一个小错字
【问题讨论】:
-
您是否使用
type=checkbox进行输入?删除后无需刷新。要删除复选框,请使用 $(this).closest('div').remove() -
另外,如果 jquery 和 jquery mobile 使用的是哪个版本?因为提供的链接中的代码已经很老了。
-
是的,使用
type=checkbox。我曾尝试过一种容器移除方法,但在触摸设备上,它的副作用是删除了我点击的复选框和旁边的复选框。正如您所看到的,在删除复选框期间,我没有尝试刷新复选框。使用我的脚本示例,复选框被缓存,并在触摸设备和完整浏览器上成功删除。但是在任何一种方法中(直接在缓存的 $pbNum 上或在您的建议中)都会在完整的浏览器上引发异常。 -
我将通过代码。无论如何,建议使用 JQ 1.9.1 和 JQM 1.3.1
-
谢谢。我碰巧使用的是 JQ 1.10.1,但使用 1.9.1 进行了测试并遇到了同样的问题。
标签: jquery jquery-mobile jquery-mobile-checkbox