我实际上能够通过为我的个人单选按钮分配ID并以这种方式操纵它来弄清楚我的问题,但我仍然感到困扰,因为我不明白为什么这不起作用。
这是交易:假设我有两组单选按钮,看起来像这样:
<input type="radio" name="RadioGroup1" id="Group1True" value="True" /> True
<input type="radio" name="RadioGroup1" id="Group1False" value="False" /> False
<input type="radio" name="RadioGroup2" id="Group2True" value="True" /> True
<input type="radio" name="RadioGroup2" id="Group2False" value="False" /> False
我希望 RadioGroup2 按钮受影响,具体取决于 RadioGroup1 中选择的内容。例如,如果选择了 ID =“Group1True”,那么我希望隐藏 RadioGroup2 按钮(我将 RadioGroup2 按钮包含在内一个&lt; div&gt;标记来执行此操作。)
但是,如果选择 ID =“Group1False”,我不仅要重新出现 RadioGroup2 按钮(工作正常),我还想要< strong> RadioGroup2 按钮重置和取消选中。 这是我遇到问题的地方。
我已经尝试了以下所有组合(甚至还有一些我不记得的组合)。 没有他们做我想做的事。
if ( $("#RadioGroup1:checked").val() == "False" )
{
// HERE'S where I run into problems:
// This line not only unchecks the RadioGroup2 buttons, it also unchecks
// the RadioGroup1 buttons, which I DO NOT want it to do!!!!!!!!!
$("input:radio[@name=RadioGroup2]").removeAttr("checked");
// This line gives me a JavaScript error saying:
// "Object doesn't support this property or method"!!!!!!!
$("input[@name=RadioGroup2]").removeAttr("checked");
// This line does absolutely nothing
$("RadioGroup2").removeAttr("checked");
}
正如我所说,我能够通过引用ID而不是广播组名来解决我的问题,但我仍然感到沮丧,因为我不知道为什么这不起作用。
有人可以启发我吗?
答案 0 :(得分:3)
您的选择器语法不正确。
$('input[name="RadioGroup1"]').whatever();
(实际上我认为它不是“不正确”,而是“错误”;你的选择器正在寻找“@name”属性而不是“name”的值。)
#
代表“id”值,而不是“name”,因此#RadioGroup1
不适合您。
您可以选择将“已检查”属性设置为.removeAttr("checked")
,而不是false
:
$('input[name="RadioGroup1"]').prop("checked", false);
您还可以为单选按钮组提供“类”值,这比使用元素名称更简洁:
$('input.radio-group-1')
或其他什么。当然,它意味着更多的标记。
我个人认为这是更好的方式;当你搞乱DOM时,你应该操纵DOM对象属性,而不是元素属性。但是,删除属性可能会有效。