【问题标题】:Set radio button checked - label doesn't change选中单选按钮 - 标签不会改变
【发布时间】:2020-02-04 20:09:29
【问题描述】:

我想删除并设置一个选中的单选按钮。在 sn-p 中,它就像一个魅力,但在 localhost 上却没有。虽然输入被检查,但标签没有改变。如果我将另一个单选按钮(例如 #b)设置为选中状态,则标签会更改。

Here 是 JSFiddle。

$('#a').attr('checked', false);
$('#a').attr('checked', true);
input:checked + label {
  /* background-color, font-size, etc. */
}

【问题讨论】:

  • 请提供一个 JS fiddle 或类似的东西
  • 如果没有你的html,这个问题很难回答
  • In the snippet it works like a charm but on localhost it doesn't 通常这是因为您忘记使用 document.ready 处理程序,因为 sn-p 编辑器/jsFiddle 默认为您提供此功能。但是,如果没有看到您的所有相关代码,我们无法准确回答这个问题。
  • checked 应该是设置/取消设置,.prop 不确定这是什么原因。
  • @user3154108 使用道具作品,你知道为什么吗?

标签: javascript jquery html css radio-button


【解决方案1】:

使用.prop 而不是.attr,后者会导致像`checked=false" 这样的html 而不是删除checked 属性。

编辑:根本问题是 OP 在两个同名无线电上使用了.attr.attr 永远不会删除检查的属性。最终会为您提供两个已检查的无线电,这是无效的。

【讨论】:

  • 不确定为什么这是公认的答案。当然prop() 是更好的做法,但是 OP 逻辑应该与 attr() 一起使用(并且确实:jsfiddle.net/h9uzjnkp)因此肯定还有另一个潜在问题
  • 查看编辑。问题是checked=false 作为 html 中的属性仍然被认为是选中的单选,如果您有两个同名选中的单选,您的浏览器最终不会检查任何原因,因为 html 在语义上是无效的。
  • @RoryMcCrossan 只有在默认情况下将检查设置为(html)然后删除并再次添加时才会出现问题(请参阅jsfiddle.net/w41q983r)。在其他情况下,我没有这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2014-03-16
  • 2021-04-23
  • 2013-07-15
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
相关资源
最近更新 更多