使用jQuery筛选单选按钮,比较值。

4
我有以下代码。试图根据一个传入的数组值来预设单选按钮。它将是1-3。
<input name="rating1" type="radio" value="1" />
<input name="rating1" type="radio" value="2" />
<input name="rating1" type="radio" value="3" />

$(document).ready(function() {                         
    //Setting  up the radio buttons                    
    var $radios = $('input:radio[name=rating1]');
        //ratingAnswer is the value I need to select in the radio group. Value=2
    var ratingAnswer=answersArray[oneMap].RATING;
      if($radios.is(':checked') === false) {
        $radios.filter('[value=ratingAnswer]').attr('checked', true);
}

当前代码并未返回任何内容,因为它在寻找值为ratingAnswer的字符串,而不是ratingAnswer变量的值。我已经尝试过value=' + ratingAnswer + ',但是它完全不喜欢那个。如何在该value区域注入一个变量?谢谢提前。

3个回答

6
$radios.filter('[value="' + ratingAnswer + '"]').attr('checked', true);

如果这仍然不起作用,请仔细查看ratingAnswer的值,看看它是否符合您的期望。
示例:http://jsfiddle.net/6zAN7/1/

1
为设置“checked”值,请使用prop而不是attr - Chien-Wei Huang

2
你应该更改这一行:
 $radios.filter('[value=ratingAnswer]').attr('checked', true);

针对这个问题:

 $radios.filter('[value='+ratingAnswer+']').attr('checked', true);

0

解决这个问题的通用方法 - 不假设值不会与jQuery选择器语法冲突 - 如下所示:

$radios.filter(function() { return this.value == varWithValueToBeChecked; }).prop('checked', true);

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