在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,但无线电实际上不会被检查或接收为已检查。
梦魇!其他人遇到过这种情况并有任何修复方法吗?
答案 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/1536和http://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);