-1

我实际上能够通过为我的单个单选按钮分配 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按钮包裹在 <div> 标记中以执行此操作)。

但是,如果选择了ID="Group1False",我不仅希望RadioGroup2按钮重新出现(效果很好),我还希望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 而不是无线电组名称来解决我的问题,但我仍然很沮丧,因为我不知道为什么这不起作用。

有人可以启发我吗?

4

1 回答 1

3

您的选择器语法不正确。

$('input[name="RadioGroup1"]').whatever();

(实际上我猜它不是“不正确”而是“错误”;您的选择器正在寻找“@name”属性而不是“name”的值。)

#是“id”值,而不是“name”,所以#RadioGroup1对你不起作用。

.removeAttr("checked")您也可以将“checked”属性设置为false

$('input[name="RadioGroup1"]').prop("checked", false);

您还可以为单选按钮组赋予“类”值,这比使用元素名称更简洁:

$('input.radio-group-1')

管他呢。当然,这意味着更多的标记。

我个人认为这是更好的方法。当你弄乱 DOM 时,你应该操作 DOM 对象属性,而不是元素属性。但是,删除该属性可能会起作用。

于 2012-06-07T13:54:29.170 回答