Радио Кнопки и .attr('checked', 'checked') НЕ работают в IE7

Есть ли способ установить радиокнопки при добавлении в IE7?

Что, кажется, работает в каждом браузере, не похоже, что он работает в IE6,7, несмотря на то, что я читаю везде, что делаю это правильно. Я не знаю, почему он не работает.

var $itemVariantRowRadio = $("<input/>")
    .attr("type", "radio")
    .attr("name", "itemvariant")
    .addClass("itemvariant")
    .val('whatever');


    $itemVariantRowRadio.attr('checked', 'checked');
    $itemVariantRow.append($itemVariantRowRadio)

Теперь, если я делаю console.log($itemVariantRowRadio.attr('checked') в IE6/7, тогда он говорит, что он установлен в ИСТИНА, но радио не проверяется или не выбирается, как отмечено.

Кошмар! Кто-нибудь еще сталкивается с этим и имеет какие-то проблемы?

Ответы

Ответ 1

Если в jQuery >= 1.6:

Используйте prop, как показано здесь: .prop() vs .attr()

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

Если в jQuery < 1,6:

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

и

Попробуйте создать свой элемент следующим образом:

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

Смотрите скрипту: http://jsfiddle.net/maniator/6CDf3/
Пример с двумя добавленными вложениями: http://jsfiddle.net/maniator/6CDf3/2/

Ответ 2

Попробуйте: $itemVariantRowRadio.not(':checked').click().change();

Итак, вы на самом деле щелкаете флажок так же, как и вы, как пользователь с помощью мыши. not(':checked') уверяет, что он еще не был проверен раньше. И затем инициируйте событие изменения, поскольку jQuery щелчок не делает этого сам по себе.

Ответ 4

Вам не нужно запускать событие click, если вы примените проверенный атрибут после добавления его в dom: 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);