前提
普通情况下 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)是互斥的,属于同一组的单选按钮只能有一个被选中,并且无法取消已经选中的按钮。需要自定义属性来判断。