0

我试图实现的目标可能非常简单,但我卡住了。我厌倦了通过在页面加载时从对象中检索其值来动态选择几个径向按钮。这是我正在尝试的:

var t_info = obj.tinfo;
var h_info = obj.hinfo;

$('input[value='+ t_info +']').attr('checked', 'checked');
$('input[value='+ t_info +']').change();
$('input[value='+ h_info +']').attr('checked', 'checked');
$('input[value='+ h_info +']').change();

在页面加载时没有选择任何单选按钮。

4

2 回答 2

1

也许你可以有一个 id-value 对的映射。(最好是 JSON)

[{ id : '#radio1', value : true },
 { id : '#radio2', value : false }]

这样,您就可以遍历它们并执行

$.each(valueMap, function(i, item){
    $(item.id).prop('checked', item.value)
});
于 2012-07-12T20:46:25.490 回答
1

如果您使用的是 jquery 1.6+,则应该使用prop

属性通常会影响 DOM 元素的动态状态,而不会更改序列化的 HTML 属性。示例包括输入元素的 value 属性、输入和按钮的 disabled 属性或复选框的 checked 属性。应该使用 .prop() 方法来设置禁用和检查,而不是 .attr() 方法。.val() 方法应该用于获取和设置值。

您还可以通过像这样链接来删除 2 行代码。

$('input[value='+ t_info +']').prop('checked', true).change();
$('input[value='+ h_info +']').prop('checked', true).change();

还要确保将代码放在文档就绪函数中,以便在尝试查找元素之前等待 dom 实际加载

$(document).ready(function(){

});

或者

$(function(){

});
于 2012-07-12T21:18:23.473 回答