Возможная ошибка в jQuery 1.6 - $(...). Attr("флажок") не работает
У меня есть две радиокнопки в моей форме, и до тех пор, пока я не начал использовать jQuery 1.6, следующий код работал нормально:
<input type="radio" id="radio1" name="test"/>
<input type="radio" id="radio2" name="test"/>
<input type="button" onclick="testcheck()" value="Test"/>
<script>
function testcheck()
{
if (jQuery("#radio1").attr("checked"))
alert("first button checked");
else if (jQuery("#radio2").attr("checked"))
alert("second button checked");
else
alert("none checked")
}
</script>
Как только я начинаю использовать jQuery 1.6, он всегда показывает "ни один не проверен", потому что jQuery(radiobutton).attr("checked")
всегда пусто
Взгляните на этот jsfiddle и измените версию jQuery между 1.5.2 и 1.6, чтобы понять, что я имею в виду.
6 ответов
Посмотрите на этот вопрос: .prop () vs.attr ()
Попробуйте это для своего кода:
function testcheck()
{
if (jQuery("#radio1").prop("checked"))
alert("first button checked");
else if (jQuery("#radio2").prop("checked"))
alert("second button checked");
else
alert("none checked")
}
Также в новейшем jQuery 1.6.1 они исправили некоторые из 1.6 attr
проблемы
Я тоже это видел. Другие ответы имеют некоторое представление о том, почему это так, и когда это будет отменено (только для получателей?); в то же время я использую
$('#thingy').is(':checked');
как обходной вариант кросс-версии.
Надеюсь это поможет!
Это не ошибка, а изменение:
http://christierney.com/2011/05/06/understanding-jquery-1-6s-dom-attribute-and-properties/
Кроме того, как упомянул @Neal, они немного поработали над этим в последней версии 1.6.1.
Из ссылки RC:
Обновление с 1.5.2 до 1.6.1 - С появлением нового метода.prop() и изменений в методе.attr() jQuery 1.6 вызвал дискуссию о разнице между атрибутами и свойствами и о том, как они связаны с каждым из них. Другой. Это также сопровождалось некоторыми проблемами обратной совместимости, которые были исправлены в 1.6.1. При обновлении с 1.5.2 до 1.6.1 вам не нужно менять какой-либо код.
Там гораздо больше объяснений, но вы можете перейти к 1.6.1 и все будет в порядке...
РЕДАКТИРОВАТЬ - Добавлено ниже 16.05.11
Джон Резиг просто взвесил изменения, внесенные в этот список, и почему...
Я не могу объяснить изменение между версиями, но есть селектор, специально ищущий проверенный - http://api.jquery.com/checked-selector/
.attr()
а также .data()
резко изменились в JQuery 1.6.
Это лучше объяснено в этой статье:
Обновление до jQuery 1.6: проблемы, с которыми вы можете столкнуться
Надеюсь это поможет. ура