单选按钮和.attr(’checked’,’checked’)在IE7中不起作用

在IE7中添加时是否有任何方法可以检查单选按钮?

什么似乎在每个浏览器中都有效,看起来不像它在IE6,7中工作,尽管到处读到我正在做的正确。 我完全不知道为什么它不起作用。

var $itemVariantRowRadio = $("") .attr("type", "radio") .attr("name", "itemvariant") .addClass("itemvariant") .val('whatever'); $itemVariantRowRadio.attr('checked', 'checked'); $itemVariantRow.append($itemVariantRowRadio) 

现在,如果我在IE6 / 7中执行console.log($itemVariantRowRadio.attr('checked') ,那么它表示它已设置为TRUE但实际上收音机不会被检查或选中。

恶梦! 其他人遇到过这种情况并有任何修复方法吗?

如果在jQuery> = 1.6中:

使用如下所示的prop : .prop()vs .attr()

 $itemVariantRowRadio.prop('checked', true); 

如果在jQuery <1.6:

 $itemVariantRowRadio.attr('checked', true); 

也:

尝试创建您的元素,如下所示:

 var $itemVariantRowRadio = $("",{ type: 'radio', name: 'itemvariant', class: 'itemvariant', checked: true, value: 'whatever' }); $itemVariantRow.append($itemVariantRowRadio); 

请参阅小提琴: http : //jsfiddle.net/maniator/6CDf3/
附加2个输入的示例: http : //jsfiddle.net/maniator/6CDf3/2/

尝试: $itemVariantRowRadio.not(':checked').click().change();

因此,您实际上单击该复选框就像使用鼠标的用户一样。 not(':checked')会确保之前没有检查过。 然后触发更改事件,因为jQuery click本身不会这样做。

MSIE不允许您在创建input元素后更改其type

请参阅http://bugs.jquery.com/ticket/1536和http://api.jquery.com/jQuery/#jQuery2

只需创建它:

 $('') 

如果在将其附加到dom之后应用checked属性,则不需要触发click事件: http : //jsfiddle.net/XjHUe/2/

 
var $itemVariantRowRadio = $("") .attr("type", "radio") .attr("name", "itemvariant") .addClass("itemvariant") .val('whatever'); //$itemVariantRowRadio.attr("checked", true); $("#content").append($itemVariantRowRadio); $(".itemvariant").attr('checked',true); var val = $(".itemvariant").attr("checked"); alert(val);