<fieldset data-role='controlgroup' id='V14'>
<input id ='V14_1' type='radio' name='V14' value='1'><label for='V14_1'>UNO</label>
<input id ='V14_2' type='radio' name='V14' value='2'><label for='V14_2'>DOS</label>
<input id ='V14_3' type='radio' name='V14' value='3'><label for='V14_3'>TRES</label>
</fieldset>
我只想使用此功能对单选按钮进行排序,这非常有效:
var container = $("#V14");
var cbs = container.children('input');
var entry;
for (var i=0;i< cbs.length;++i){
entry = $(cbs[Math.floor(Math.random() * cbs.length)]);
entry.add(entry.next()).appendTo(container);
}
...但是当我在JQM事件中插入那段代码时,它并没有!
$(document).on('pagecontainerbeforeshow',function(e,ui){
现在它不起作用:
var container = $("#V14");
var cbs = container.children('input');
var entry;
for (var i=0;i< cbs.length;++i){
entry = $(cbs[Math.floor(Math.random() * cbs.length)]);
entry.add(entry.next()).appendTo(container);
}
})
偶数&#39;页面容器显示&#39;得到完美的触发,我可以调试里面的代码.......当我检查cbs.length它得到ZERO!...但是如果我在这个事件之外运行相同的代码,cbs.length得到3!我的上帝,哪个是错误的?
答案 0 :(得分:0)
首先,页面容器事件位于BODY标记而不是文档上。 其次,在那时,jQM增强了字段组,因此您需要对.ui-radio DIV进行排序,而不是对基础输入进行排序。最后,销毁并重新增强控制组,以便正确地重绘项目:
$("body").on("pagecontainerbeforeshow", function(e, ui){
var container = $("#V14");
var cbs = container.find('.ui-radio');
var entry;
for (var i=0;i< cbs.length;++i){
entry = $(cbs[Math.floor(Math.random() * cbs.length)]);
entry.add(entry.next()).appendTo(container);
}
container.controlgroup("destroy").controlgroup();
});
工作 DEMO