JQuery不允许我选择特定的单选按钮组

时间:2012-06-07 13:53:14

标签: javascript jquery syntax jquery-selectors

我实际上能够通过为我的个人单选按钮分配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而不是广播组名来解决我的问题,但我仍然感到沮丧,因为我不知道为什么这不起作用。

有人可以启发我吗?

1 个答案:

答案 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对象属性,而不是元素属性。但是,删除属性可能会有效。