如何链接一个Div内的无线电的jQuery removeAttr

时间:2011-08-31 16:49:41

标签: jquery

我有一个复选框,显示/隐藏包含单选按钮网格的div。在我的页面底部,我有这个jQuery:

$(document).ready(function(){
  $('#cb1_1').click(function(){ $('div#QxGrid').slideToggle('slow');
 });
});

这很有效。当隐藏单选按钮虽然我希望页面自动取消选中所选的任何无线电,所以我尝试链接 removeAttr('checked')

$('#cb1_1').click(function(){ $('div#Qx1').removeAttr('checked').slideToggle('slow'); });

这不起作用......那是因为jQuery期待一个id为Qx1的广播吗? (不是Qx1 div中的一堆无线电?)HTML提取(缩写)看起来像

<div id="Qx1">
  <p class="ans">
    <input type="radio" name="q1" id="q11" value="1"> etc.
    <input type="radio" name="q1" id="q12" value="2"> etc.
    <input type="radio" name="q1" id="q13" value="3"> etc.
  </p>
</div>

3 个答案:

答案 0 :(得分:2)

$('div#Qx1').find('input[type=radio]').removeAttr('checked').end().slideToggle('slow');

编辑: 真的,Endophage:

$('div#Qx1').slideToggle('slow').find('input[type=radio]').removeAttr('checked');

这样你不需要结束()

答案 1 :(得分:1)

正确。你拥有它的方式,它想从div中删除“已检查”属性。只需在click()中添加另一行即可取消选中已检查的内容:

$(document).ready(function(){
  $('#cb1_1').click(function(){ 
    $('p.ans').children('input').removeAttr('checked');
    $('div#Qx1').slideToggle('slow');
 });
});

答案 2 :(得分:1)

div没有属性checked,因为它不应该是为什么这不起作用的原因。以下应该有效,请注意链接方法的顺序非常重要,因为您希望在遍历其子节点输入之前执行div所需的所有操作:

$('#q1voc_1').click(function()
{ 
    $('div#Qx1').slideToggle('slow').children('input[type=radio]').each(function()
    {
        $(this).removeAttr('checked');
    }); 
});

我必须尝试一下,但您也可以将$('div#Qx1')...部分简化为:

$('div#Qx1').slideToggle('slow').children('input[type=radio]').removeAttr('checked');