获取此消息:
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字符串中的一个小错误
答案 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);
});