Радио Кнопки и .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 щелчок не делает этого сам по себе.
Ответ 3
MSIE не позволяет вам изменять type
элемента input
после его создания.
См. http://bugs.jquery.com/ticket/1536 и http://api.jquery.com/jQuery/#jQuery2
Просто создайте его так:
$('<input type="radio">')
Ответ 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);