jQuery - 选择值等于某个元素

3
我正在尝试使用jQuery查找一种简单的方法,根据渲染时的初始值来检查单选按钮选项。
<form>
<input type="radio" name="myRadio" value="weekly" />Weekly <br />
<input type="radio" name="myRadio" value="monthly" />Monthly <br />
<input type="radio" name="myRadio" value="yearly" />Yearly <br />
</form>

以下是 Javascript 代码:

$('input [value="weekly"]').prop("checked", true);

我在这里设置了一个JS fiddle: http://jsfiddle.net/xpvt214o/448712/ 有趣的是,它使用本机浏览器document.querySelector工作,但似乎不适用于jQuery。我想坚持使用jQuery的方式来确保代码的一致性。
另外,我要选择值的原因是,我调用的JSON API返回一个枚举字符串类型。如果我必须为每个单选按钮添加唯一的ID属性,然后使用switch case根据枚举字符串类型选择适当的按钮,那将非常烦人。

4
请删除选择器中的空格。就像在CSS中,空格表示后代元素。 - Taplar
4
像这样的一个简单事情,可能会因为打错字而被关闭。 - Taplar
2个回答

3

只需简单地删除选择器和属性之间的空格:

$('input[value="weekly"]').prop("checked", true);

$('input[value="weekly"]').prop("checked", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <input type="radio" name="myRadio" value="weekly" />Weekly <br />
  <input type="radio" name="myRadio" value="monthly" />Monthly <br />
  <input type="radio" name="myRadio" value="yearly" />Yearly <br />
</form>

使用空格,可以让jQuery选择具有[value="weekly"]属性的元素,并且它们是元素的后代。


1
这真是一个奇怪的命运,我们竟然因为如此微小的一件事情——一个空格而遭受如此多的恐惧和疑虑!该死。谢谢。解决了...在我的querySelector示例中我没有加空格,这就解释了行为上的差异。等StackOverflow计时器结束后我会接受答案。 - ImagineEverything_Brad

0

$(function(){
          $('input[type="radio"][value="weekly"]').prop('checked', true);    

        })   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="radio" name="myRadio" value="weekly" />Weekly <br />
<input type="radio" name="myRadio" value="monthly" />Monthly <br />
<input type="radio" name="myRadio" value="yearly" />Yearly <br />
</form>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接