看看这个小提琴:http: //jsfiddle.net/5rmEe/61/
var inputVal = false;
//allow user to deselect a radio button by clicking a checked radiobutton
$('input[type=radio]').each(function(){
var inputObj = $(this);
inputObj.click(function(e){
if(inputVal === inputObj.val()){
inputVal = false;
inputObj.attr('checked', false);
}
else{
inputVal = inputObj.val();
inputObj.attr('checked', 'checked');
}
e.stopPropagation();
});
});
$('.asdf').click(function(){
$('.haha').trigger('click');
});
请注意 asdfsdaf 跨度会触发单击单选按钮
首先,单选按钮设置为,如果您单击选中的单选按钮,它将取消选中自身(尝试一下),并且在单击单选按钮本身时有效
现在,如果您单击跨度,它将使复选框正确地检查自身,但是如果您再次单击跨度,它将不会将单选按钮设置为未选中,即使它显然执行了单击事件,理论上它应该取消选中单选由于单击事件而相应地按钮(如果您实际单击单选按钮,则此事件有效)
为什么会这样?如果使用 .trigger() 手动触发事件,attr() 方法是否不起作用?
我该如何解决这个问题,以便在选中单选按钮时单击跨度也会触发单选按钮中的取消选中?