我正在使用phonegap和jquery mobile制作移动应用程序。每当我选择一个菜单元素时,我会调用一个WS,它会给我一个我在屏幕上显示的答案。它完美地适用于那里。
因为我希望有一个更好的视图,所以我使用代码触发器('create')。 (http://jquerymobile.com/demos/1.0a4.1/docs/forms/forms-checkboxes.html,但我必须做一个创作)
var listadohtml = '<div data-role="fieldcontain"><fieldset data-role="controlgroup">';
for (var i=0;i<resultado.length;i++){
var item = '';
var id = resultado[i]['id'];
item += '<input type="checkbox" name="checkbox-'+id+'" id="checkbox-'+id+'" class="custom" />';
item += '<label for="checkbox-'+id+'">'+resultado[i]["title"]+'</label>';
listadohtml += item;
}
listadohtml += '</fieldset></div>';
$('#listaPreguntas').html(listadohtml).trigger('create');
在此之后,我将事件联系起来:
$("#listaPreguntas input[type='checkbox']").bind( "click", function(event, ui) {... some code ...});
它显示一切正常,但问题是有时(并非总是,这是问题)当我点击一个复选框时,绿色勾号未显示但事件发生了变化。当它发生时,我可以通过点击屏幕的其他部分看到我之前点击过,因为它刷新并显示勾号。
我的结论
你可以看到它不是一个“逻辑”问题,而是一个可用性问题。
提前致谢!
答案 0 :(得分:2)
对于复选框和广播,请使用change
事件而不是click
。请记住,将事件附加到动态元素是不同的,我已相应地更新了我的答案。
<强> Demo 强>
$(document).on('change', '[type=checkbox]', function () {
// code here
});
答案 1 :(得分:0)
如果事件单击每次都按预期触发,则尝试在代码中使用addClass和removeClass设置复选框选中/取消选中的类,而不是依赖于JQM。