前提
普通情况下 radio 单选框仅仅能实现多选一的效果,可是一旦选择当中一个后,这个单选框就不可点击取消其选中状态了。
解决
//单个raido点击切换 $.each($("input:radio"), function(){ var that = this; var hasClass = $(that).prop('waschecked'); if (typeof hasClass === 'undefined') { var isChecked = $(that).prop('checked'); console.log('isChecked', isChecked) // 如果当前单选按钮是选中状态,取消其选中状态 if (isChecked) { $(that).prop('waschecked', true); } else { $(that).prop('waschecked', false); } } })
注意:
- 在 Firefox 中,因为 checked 属性是布尔属性,它在 HTML 中不应有值。对于布尔属性,attr 方法返回的值可能与预期的不一致。应该使用 .prop() 方法来获取和设置。
- 单选按钮(radio button)是互斥的,属于同一组的单选按钮只能有一个被选中,并且无法取消已经选中的按钮。需要自定义属性来判断。