Я не могу найти полный список в Интернете. Каждый, кто дает какой-либо список, просто копирует часть, указанную в блоге jQuery 1.6. Что касается № 3, Starx sortof обратился к этому в своем комментарии к ответу здесь. http://timmywillison.com/ лучше подходит для обсуждения. В спецификациях MDN и W3C также упоминается, что существуют различные интерфейсы от атрибутов, где они могут быть установлены так, как если бы они были свойствами (https://developer.mozilla.org/en/DOM/element), хотя MDN фактически не перечисляет, какие из них являются.MDN упоминает, что использование интерфейсов свойств в качестве сеттеров более хрупкое, чем использование getAttribute:
«Хотя эти интерфейсы обычно используются большинством элементов HTML и XML, для конкретных объектов, перечисленных в спецификации HTML DOM, существует более специализированный интерфейс для определенных объектов. Обратите внимание, однако, что эти HTML-интерфейсы являются «только для документов [HTML 4.01] и [XHTML 1.0] и не гарантированы для работы с любой будущей версией XHTML». Проект HTML 5 заявляет, что он нацелен на обратную совместимость с этими HTML интерфейсы, но говорит о том, что «некоторые функции, которые ранее были устаревшими, плохо поддерживались, редко использовались или считались ненужными, были удалены». Можно избежать потенциального конфликта, полностью перейдя к методам атрибутов DOM XML, таким как getAttribute() ».
Однако, кажется, теперь можно предположить, что любая страница документа HTML5, отображаемая в Firefox и Chrome, уже находится в среде, где уже были удалены интерфейсы «устаревшие, плохо поддерживаемые» и т. Д.
Таким образом, я протестировал каждый атрибут, а также неатрибутные свойства, упомянутые в блогах jQuery, против каждого типа каждого элемента HTML, используя значения boolean, string и int.
Использование 1.7.2 и 1.8pre, будь вы называете .prop() или Attr(), JQuery будет внутренне всегда на самом деле использовать .prop для:
async, autofocus, autoplay, checked, controls, defer, disabled, hidden, loop,
multiple, open, readonly, required, scoped, selected
для HTML элементов (не считая окна документа и т.д. здесь), JQuery не будет установлен какой-либо из следующих атрибутов, если вы используете .attr():
accept-charset, accesskey, bgcolor, buffered, codebase, contextmenu, datetime,
default, dirname, dropzone, form, http-equiv, icon, ismap, itemprop, kind,
language, list, location, manifest, nodeName, nodeType, novalidate, pubdate,
radiogroup, seamless, selectedIndex, sizes, srclang, style, tagName
И, наконец, JQuery будет установлен следующий список атрибутов с обеих .prop() или .attr (). В первом списке выше jQuery всегда использует .prop(), независимо от того, используете ли вы .attr() или .prop(). Для атрибутов в этом списке jQuery использует все, что вы используете. Если вы используете .prop(), jQuery использует .prop() и vica versa. В любом случае результат будет таким же. Таким образом, игнорируя любые потенциальные смысловые соображения, только в том случае, если prop() был ~ 2,5 раза быстрее, чем .attr(), в блоге jQuery 1.6.1 предлагается использовать .attr(), но вместо этого можно использовать .prop() , со значительным увеличением производительности:
accept, action, align, alt, autocomplete, border, challenge, charset, cite,
class, code, color, cols, colspan, contenteditable, coords, data, defaultValue,
dir, draggable, enctype, for, headers, height, hidden, high, href, hreflang,
id, keytype, label, lang, low, max, maxlength, media, method, min, name,
optimum, pattern, ping, placeholder, poster, preload, readonly, rel, required,
reversed, rows, rowspan, sandbox, scope, shape, size, span, spellcheck, src,
srcdoc, start, step, summary, tabindex, target, title, type, usemap, value,
width, wrap
Некоторые из ответов на цель дубликатов вдаваться в различия между этими двумя методами, получения и установки, даже пречисление свойства и атрибуты, которые могут быть доступны с одного или другого. –
Кажется, что, может быть, ваш вопрос был более похожим на то, в чем разница между атрибутом и свойством, и в какой момент вы должны установить свойство, а не атрибут. Это, однако, также [очень хорошо объяснено в дубликате] (https://stackoverflow.com/a/5884994/400654). –