2016-01-21 105 views
1

我有一个无线电元件数组的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> 

回答

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); 
+0

这正是我所需要的。非常感谢。 – Ralph