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

时间:2011-06-21 21:31:51

标签: jquery internet-explorer-7 radio-button

在IE7中追加时,是否有办法检查单选按钮?

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

var $itemVariantRowRadio = $("<input/>")
    .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,但无线电实际上不会被检查或接收为已检查。

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

4 个答案:

答案 0 :(得分:35)

如果在jQuery&gt; = 1.6:

使用此处显示的prop.prop() vs .attr()

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

如果在jQuery&lt; 1.6:

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

ALSO:

尝试创建您的元素:

var $itemVariantRowRadio = $("<input/>",{
     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/

答案 1 :(得分:4)

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

因此,您实际上单击该复选框就像使用鼠标的用户一样。 not(':checked')会确保之前未检查过。{1}}然后触发更改事件,因为jQuery click不会单独执行此操作。

答案 2 :(得分:2)

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

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

只需创建它:

$('<input type="radio">')

答案 3 :(得分:0)

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

<div id='content'></div>
var $itemVariantRowRadio = $("<input/>")
    .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);