このフィドルをチェックしてください: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() メソッドは機能しませんか?
ラジオボタンがチェックされているときに、スパンをクリックするとラジオボタンのチェックが外されるようにするにはどうすればよいですか?