Почему jQuery всегда возвращает «open» для $ .attr («open»), независимо от фактического значения атрибута? - PullRequest
4 голосов
/ 02 марта 2012

Почему в jQuery это:

$('<div open="whatever">').attr('open')

Всегда оценивать 'open' вместо 'whatever'?Напротив, это:

$('<div asdf="whatever">').attr('asdf')

Оценивается как 'whatever', как и ожидалось.

Да, я знаю, что open и asdf не являются допустимыми атрибутами HTML;Я не ищу ответы, которые говорят что-то вроде «просто используйте data-open» и т. Д. Я ищу объяснение вышеупомянутого поведения.

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

open на самом деле допустимый атрибут для HTML5 , который должен быть логическим.Если это так, я подозреваю, что если у вас вообще установлено «open», браузер оценивает его как истинное и возвращает его «open».возвращая «открытый» вместо «истинный».Вероятно, из-за неполной реализации в различных браузерах.Так или иначе, они могли бы отложить этот атрибут на потом.

[addendum: согласно комментариям, похоже, HTML обрабатывает логические значения]

0 голосов
/ 02 марта 2012

Сделал некоторое тестирование, и по какой-то причине это, кажется, работает:

document.getElementById('myID').getAttribute('open');

Хотя jQuery не работает ни для .prop (), ни для .attr ()

Странно, правда?

FIDDLE

...