【问题标题】:JQuery will NOT allow me to select specific radio button groupJQuery 不允许我选择特定的单选按钮组
【发布时间】:2012-06-07 13:53:14
【问题描述】:

我实际上能够通过为我的单个单选按钮分配 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 按钮包裹在

标签来执行此操作)。

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

有人可以启发我吗?

【问题讨论】:

  • 你为什么使用“@”?只需使用 :radio[name=RadioGroup2] 作为选择器 api.jquery.com/attribute-equals-selector
  • CSS 选择器语法与 xpath 不同。
  • @ianpgall -- 帮个忙 -- 请把这个写成答案,这样我就可以把它标记为答案!!!
  • 不用担心,其他人也回答了同样的问题,但也提供了更多信息,我不担心成为正确答案,很高兴你得到它。不过,我会将链接添加到已接受答案的解释中:)

标签: javascript jquery syntax jquery-selectors


【解决方案1】:

您的选择器语法不正确。

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

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

# 用于“id”值,而不是“name”,因此 #RadioGroup1 对您不起作用。

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

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

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

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

或其他。当然,这意味着更多的标记。

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

【讨论】:

  • +1 但是,属性选择器中的 @ 似乎来自较旧的 jQuery 版本,其中 .prop 尚不可用。
  • @pimvdb 我已经使用 jQuery 很长时间了,而且我从来没有使用过“@”——我认为这是一个 XSL/xpath 的东西,但它不是 CSS 语法。
  • know # 用于 ID;那是我的错字。删除 @ 是我正在寻找的答案;我使用的参考文献使用了它,这就是我把它放在那里的原因。
  • @RayK。是的,这就是为什么涉及“名称”属性的代码中没有“@”符号的原因。里面会有什么参考?看起来有点神奇,因为它从来没有是正确的 CSS 选择器语法。
  • @RayK。哇。好吧,我能理解你会因此而误入歧途;它看起来如此专业和权威:-)
猜你喜欢
  • 1970-01-01
  • 2021-01-26
  • 2018-08-01
  • 2018-01-23
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
相关资源
最近更新 更多