如何绕过这个明显的 Webkit 复选框渲染错误
How do I bypass this apparent Webkit checkbox rendering bug?
所谓的渲染错误可以在这里看到:
http://jsfiddle.net/2FZhW/
<input id="box" type="checkbox">
<button id="chk">Check</button>
<button id="unchk">Uncheck</button>
function check() {
$("#box").prop("checked", "checked");
}
function uncheck() {
$("#box").removeProp("checked");
}
$("#chk").click(check);
$("#unchk").click(uncheck);
受影响的浏览器包括:Chrome 27,Android Froyo和我同事的iPhone(版本?不受影响:IE9、FireFox 22
在受影响的浏览器上,您可以分别单击"检查"和"取消选中"按钮一次,之后它们似乎停止工作。
尽管外观如此,但每次单击时复选框状态似乎都设置正确。 我使用Chrome调试器得出了这个结论。
较新版本的jQuery似乎对结果没有影响。
如果答案很明显,我确实花了一些时间在SO和Google上搜索!
提前谢谢。
您想选中和取消选中在 prop 中使用布尔值,请不要使用 removeProp
,正如您提到的,这最终可能会从某些浏览器中的元素中删除 checked 属性,并可能导致这样的问题。
function check() {
$("#box").prop("checked", true);
}
function uncheck() {
$("#box").prop("checked", false);
}
演示
查看文档
.removeProp(( 方法删除由 .prop(( 方法设置的属性。
对于 DOM 元素或窗口对象的某些内置属性,如果尝试删除该属性,浏览器可能会生成错误。 jQuery 首先将未定义的值分配给属性,并忽略浏览器生成的任何错误。通常,只需要删除已在对象上设置的自定义属性,而不是内置(本机(属性。
注意:不要使用此方法删除本机属性,例如选中、禁用或选定。这将完全删除该属性,并且一旦删除,就无法再次添加到元素中。使用 .prop(( 将这些属性设置为 false。
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 使用$.ajax发布多个复选框
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- 使用jquery选中/取消选中单个复选框
- Angular JS Filter-通过3个复选框进行筛选
- 如果选中了多个复选框,如何添加事件
- Javascript复选框函数:;缺少:在属性id之后"
- JavaScript-切换“;全部检查”;复选框true/false
- 如何从javascript/jquery中的复选框中获取布尔值
- webkit浏览器中的复选框问题
- 样式为 -webkit-外观的单选按钮:复选框:Chrome 中的不确定状态
- 如何使用 c# 和 webkit (javascript) 在 html 中选择下拉复选框
- 如何绕过这个明显的 Webkit 复选框渲染错误