2013-02-01 21 views
1

我有一个需要能够取消选中选中的单选按钮在一组3.它适用于大部分,但它是一个小错误 - 有时不检查,当我想检查一个不同的按钮,有时不检查第一次点击时的按钮,当我没有选中一个不同的按钮时,点击不同的收音机几次后取消选中等等。希望有人可以看一看,看看是什么造成这个取消单选按钮与jQuery有点bug

CSS:

input[type="radio"] { display: none; } 
input[type="radio"] + label { 
    color:#f2f2f2; 
    font-family:Arial, sans-serif; 
    font-size:14px; 
} 
input[type="radio"] + label span { 
    display:inline-block; 
    width:19px; 
    height:19px; 
    margin:-1px 4px 0 0; 
    vertical-align:middle; 
    background:url(../images/check_radio_sheet.png) -38px top no-repeat; 
    cursor:pointer; 
} 
input[type="radio"]:checked + label span { 
    background:url(../images/check_radio_sheet.png) -57px top no-repeat; 
} 

的HTML:

<form class="optionsfilter" action="#"> 
<ul style="list-style: none;"> 
<li> 
<span style="color: #eee;">Smoking Inside?</span> 
<div class="clear"></div> 
<input type="radio" name="smokingoption" id="smoking" value="smoking"><label for="smoking" onclick=""><span></span>Yes</label> 
<input type="radio" name="smokingoption" id="non-smoking" value="non-smoking"><label for="non-smoking" onclick=""><span></span>No</label> 
<input type="radio" name="smokingoption" id="cigarsmoking" value="cigar"><label for="cigarsmoking" onclick=""><span></span>Cigars</label> 
</li> 
</ul> 
</form> 

这里的脚本:

$('input[type="radio"]').click(function() { 
    var checked = $(this).attr('checked'); 
    if(checked){ 
     $(this).attr('checked', false); 
    } else{ 
     $(this).attr('checked', true); 
    } 
}); 

而且这里有一个的jsfiddle所有代码: http://jsfiddle.net/RfDk6/

+0

选中此项。 http://jsfiddle.net/RfDk6/2/ – DON

+1

你想达到什么目的?这不是单选按钮的默认行为吗? – undefined

+0

@DON只是给出单选按钮的默认行为。我在过滤器中使用这些选项作为选项,但我希望用户能够完全取消选中,以便在过滤器中删除选项(如果他们愿意的话)。由于这3个走在一起,我需要使用单选按钮而不是复选框。 –

回答

2

我不知道你想达到什么目的,但在jQuery 1.6的修改所检查应使用prop方法代替attr,checked属性,并通过attr设置为false/true不会更改单选按钮的checked属性。

$('input[type="radio"]').change(function() { 
    $(this).prop('checked', function(i, checked){ 
     return !checked; 
    }); 
}); 
0

这适用于Chrome(我没有在别处测试过 - 对不起)。

$("input:radio").removeAttr("checked"); 

.prop功能只有摆脱了一审对单选按钮组,而removeattr核爆很多。