Это обычное поведение в браузерах, когда при добавлении элемента с атрибутом ID в документ браузер также покажет свойство в window
с идентификатором элемента в качестве имени и элементом в качестве значения. Я бы не стал полагаться на него, если беспокоит совместимость, поскольку (а) он явно не указан ни в одном общем стандарте, который я могу найти, и (б) магические переменные могут вызвать всевозможные головные боли, если вы не будете осторожны. Но в настоящее время это делают как минимум 4 из 5 распространенных браузеров. (IE, Chrome, Opera и Firefox — все это делают, хотя веб-консоль FF довольно ненадежна в этом отношении. У меня нет Safari для тестирования.)
Что касается того, почему ваша кнопка отображается как ({jQuery##########:2})
:
Когда jQuery добавляет к элементу обработчики событий (или некоторые другие типы данных), он устанавливает свойство с именем 'jQuery' + the version digits + a big random number
, а значением является уникальное целое число. Кое-что о ресурсах и тому подобное.
Во всяком случае, соедините это со встроенной консолью Firefox, которая довольно тупа. В тот момент, когда вы добавляете свойство к элементу, консоль забывает, что это элемент. Например, откройте консоль на любой существующей странице (подойдет даже about:blank
) и попробуйте ввести это по порядку (хотя вы, конечно, можете пропустить комментарии):
d = document.createElement('div') // [object HTMLDivElement]
d // [object HTMLDivElement]
// all's good so far...
d.id = 'stuff' // "stuff"
d // [object HTMLDivElement]
// now set a property the browser doesn't define
d.randomProperty = 42 // 42
d // ({randomProperty:42})
// still an element, though
d.id // "stuff"
txt = document.createTextNode('test') // [object Text]
d.appendChild(txt) // [object Text]
d // ({randomProperty:42})
// and once the property's gone...
delete d.randomProperty // true
d // [object HTMLDivElement]
Проблема связана с консолью, а не с браузером или jQuery. Элементы по-прежнему остаются элементами, и они по-прежнему будут отлично работать для любых элементарных вещей, которые вы хотите с ними делать.
person
cHao
schedule
06.08.2013
press
равен другим глобальным объектам. - person Aprillion   schedule 06.08.2013