过滤无线电元素

时间:2016-01-21 00:43:33

标签: javascript jquery

我有一个无线电元素数组的jquery变量。我想根据值进一步选择一个特定的元素。

下面是我的想法,但我仍然不知道如何实现这一目标。

var gender = 1;
var radiobuttons = $('[name=\'gender\']');  //should contain 2 radio elements
radiobuttons.find('[value=\'' + gender + '\']').prop('checked', true);

HTML

<label>Female<input type="radio" name="gender" value="0"></label>
<label>Male<input type="radio" name="gender" value="1"></label>

1 个答案:

答案 0 :(得分:3)

.find()方法将尝试选择后代元素。由于input元素是自我关闭的,并且不包含任何后代元素,因此不会选择任何内容。

您似乎想要.filter() method而不是:

var gender = 1;
var radiobuttons = $("[name='gender']");
radiobuttons.filter(function () {
  return this.value === gender.toString();
}).prop('checked', true);

或使用.is() method

radiobuttons.filter(function () {
  return $(this).is("[value='" + gender + "']");
}).prop('checked', true);

但是,在最初选择元素时使用两个属性选择器会更简单:

var gender = 1;
$("[name='gender'][value='" + gender + "']").prop('checked', true);