JQuery не может получить пользовательские атрибуты на элементах UL

В настоящее время я фокусируюсь на следующей проблеме с jQuery 1.8.2.

Пользовательские атрибуты работают нормально, например, для полей ввода:

<input id="test" required="true">

$("#test").prop("required")

true

$("#test").get(0).required

true

Но не с элементами UL.

<ul id="test" required="true"></ul>

$("#test").prop("required")

undefined

$("#test").get(0).required

undefined

Есть идеи, почему он не работает с элементами UL в Firefox 16, но в MSIE 8? Спасибо!

3 ответа

Решение

Если вам нужно использовать пользовательские атрибуты по той или иной причине, ознакомьтесь с HTML5 data- атрибутов.

<ul id="test" data-required="true"></ul>

console.log($('#test').data('required'));

http://ejohn.org/blog/html-5-data-attributes/

http://api.jquery.com/data/

Это потому, что HTML5 required является допустимым свойством для элементов ввода, а jQuery возвращает значение этого свойства, а для ul элемент required это просто неверный атрибут. ul элемент не имеет required свойство, поэтому оно не определено.

http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html

Вы должны использовать:

$('#test').attr('required')
Другие вопросы по тегам