单选按钮和.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);