我有一个复选框,显示/隐藏包含单选按钮网格的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>
答案 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');