Рассматривая источник jQuery 1.6.2:
$("myElement").click(...) calls: $("myElement").bind('click', ...)
which then calls: jQuery.event.add(...)
which ultimately does either elem.addEventListener(...) or elem.attachEvent(...)
Итак, мы можем окончательно сказать, что он не устанавливает атрибут onclick
(как и следовало ожидать, поскольку addEventListener более расширяем).
НО, когда я иду глубоко через функцию .click (), атрибут добавляется к объекту DOM.Он связан с функцией данных jQuery и находится в этом фрагменте кода в функции данных jQuery, которая вызывается из event.add(...)
.Похоже, это какой-то идентификатор guid, который jQuery использует для отслеживания того, какой объект есть, без сохранения ссылки на DOM (что может привести к утечкам памяти).Код, который добавляет этот атрибут, находится здесь:
if ( !id ) {
// Only DOM nodes need a new unique ID for each element since their data
// ends up in the global cache
if ( isNode ) {
elem[ jQuery.expando ] = id = ++jQuery.uuid;
} else {
id = jQuery.expando;
}
}
Итак, в заключение, jQuery не затрагивает атрибут .onclick
, но при установке первого объекта он устанавливает по крайней мере еще один атрибут для объекта DOM.обработчик событий.