点击收音机盒

时间:2012-01-04 17:40:03

标签: jquery

我正在尝试使用jQuery检查onClick上的单选框,我的代码如下:

<ul class="icons clearfix">
    <li>
        <input type="radio" value="123456" name="selecticon"/>
        <label for="select_icon">
            <img src="pics/123456.jpg" alt="123456" width="34" height="34" />
        </label>
    </li>
    <li>
        <input type="radio" value="654321" name="selecticon" />
        <label for="select_icon">
            <img src="pics/654321.jpg" alt="654321" width="34" height="34" />
        </label>
    </li>
</ul>

和jQuery代码......

//onclick select icon
$(document).ready(function(){
    $('ul.icons li').click(function() {
    $('ul.icons li.selected').removeClass('selected');
    $(this).addClass('selected').children("input[@type=radio]").attr('checked');
   });
});

但点击它不检查单选按钮,请建议,谢谢。

4 个答案:

答案 0 :(得分:4)

变化:

.attr('checked')

要:

.prop('checked', true)

您也可以使用.attr('checked', 'checked'),但建议将prop()用于checked等布尔属性。

此处还需要围绕属性值的引号:

.children('input[@type="radio"]')

演示:http://jsfiddle.net/pUqBB/

此外(不相关),for的{​​{1}}属性必须与关联的输入<label>匹配,而不是id

最重要的是:

如果只是将整个内容包装在name

中,则根本不需要javascript

演示:http://jsfiddle.net/pUqBB/1/

另请参阅:How can I make an HTML radiobutton with a big target area?


编辑:好的,不确定您是否感兴趣但是我使用<label>使用可访问版本重写了此内容,而js仅用于添加/删除<label>类(因为我们需要javascript那个位)。我在我的所有网站上都使用此代码,随意使用它(或指出改进):

http://jsfiddle.net/pUqBB/2/

selected

答案 1 :(得分:1)

问题在于这一行:

$(this).addClass('selected').children("input[@type=radio]").attr('checked');

首先,您应该引用属性选择器,而不再需要@

.children("input[type='radio']")

第二个.attr('checked')是一个getter,它返回属性的值。如果要设置它,则需要将值作为第二个参数传递。

.attr('checked', 'checked')

您还可以使用.prop来使用布尔值代替'checked'

.prop('checked', true)

所以,它们应该是:

$(this).addClass('selected').children("input[type='radio']").prop('checked', true);

注意<label>标记用于按ID选择输入字段。因此,您可以使用它们来切换无线电。此外,如果无线电具有相同的名称,则一次只能检查一个。因此,请为您的无线电添加唯一ID,并为其设置标签for属性。像这样:

<input type="radio" value="123456" name="selecticon" id="selecticon_01"/>
<label for="selecticon_01">
    <img src="pics/123456.jpg" alt="123456" width="34" height="34" />
</label>

那么,你只需要$(this).addClass('selected')

演示:http://jsfiddle.net/wQS46/

答案 2 :(得分:0)

$(this).addClass('selected').children("input[@type=radio]").attr('checked', 'checked');

添加了工作fiddle

答案 3 :(得分:0)

request.AddHeader("Authorization", $"amx {apiKey}:{requestSignatureBase64String}:{nonce}"); 无效。 "Success":false,"Error":"Signature does not match request parameters." 应该有用。

.children