У меня была похожая проблема. У меня были некоторые формы, которые я хотел легко установить, было ли поле обязательным или нет. Моя форма ввода выглядела так:
< input id="myid" name="myname" type="text" required="true" />
Отлично работал во всем, кроме IE9! Doh!
Проблема в том, что я не хочу устанавливать новое свойство с помощью jQuery, и я не хочу расширять прототип для элементов ввода .... Я просто хочу решение, которое работает во всех браузерах без большого количества дополнительный код или ветвление.
Я попробовал метод prop () в jQuery, но, опять же, его нужно было установить вручную. Я хотел что-то, что будет принимать все элементы DOM как загруженные и извлекать данные таким образом.
Я обнаружил, что метод attQ () jQuery работает во всех браузерах, кроме IE9. Поработав некоторое время, я понял, что атрибут был там, но чтение его обрабатывалось немного по-другому в IE9.
Итак, я вспомнил значения следующим образом:
var val = $('#elementID').attr('required') || $('#elementID')[0].getAttribute('required');
Он не идеален, но он работал отлично и не требовал от меня возврата и переименования моих атрибутов с помощью «data-» или назначения их после загрузки DOM.
Не было бы замечательно, если бы jQuery 1.6.x добавил это изменение для методов attr () и prop () для нас!
Если кто-нибудь знает более элегантное решение, которое НЕ ТРЕБУЕТ УСТАНОВКИ АТРИБУТА ПОСЛЕ ЗАГРУЗКИ СТРАНИЦЫ, то, пожалуйста, дайте мне знать.