атрибут jQuery, автоматический добавленный к элементам

После использования IE8 создал в Инструментах Разработчиков впервые, я заметил, что jQuery присоединяет атрибут к некоторым моим элементам: сопроводительный текст http://thebe.jtan.com/~vince/stack/jquery.PNG

Я никогда не замечал это прежде. На самом деле это не обнаруживается в Firebug... Я только вижу его впервые теперь в Инструментах Разработчика IE8. Кто-либо знает то, что jQuery использует это для, и почему он скрыт в поджигателе?

13
задан macca1 3 May 2010 в 19:41
поделиться

4 ответа

Источник jQuery довольно легко читается, и вы можете посмотреть, что делает функция data.

Подведем итоги:

  • jQuery имеет переменную под названием 'expando', которая представляет собой 'jQuery'+(+new Date)
  • jQuery имеет другую переменную под названием uuid, которая начинается с "1"
  • jQuery. cache - пустой объект
  • Установка/получение любых "данных" для HTML-элемента/объекта будет использовать свойство expando объекта для хранения ссылки в jQuery.cache - примерно так:

    // получите идентификатор кэша элементов или создайте новый идентификатор кэша:
    var id = elem[expando] || (elem[expando] = uuid++);
    // получить кэш для элемента, или создать его:
    var data = jQuery.cache[id] || (jQuery.cache[id] = {});
    
  • Обработчики событий хранятся в свойствах events и handle этого внутреннего объекта data.

Таким образом, внутри все свойства, назначаемые с помощью .data() используют этот атрибут "expando" на HTML для хранения ключа во внутреннем кэше данных jQuery. Обработчики событий jQuery также хранятся в этом же кэше. Числовое значение, присваиваемое expando, представляет собой увеличивающийся счетчик, который ссылается на его местоположение в объекте кэша jQuery.

14
ответ дан 1 December 2019 в 23:31
поделиться

Я сомневаюсь, что это скрыто в firebug, поскольку я также видел внутри него объект данных jquery.

Я считаю, что jQuery или любой другой плагин, который вы используете, просто добавляет это в IE в качестве исправления / обходного пути для различных ошибок / недостатков, специфичных для браузера.

0
ответ дан 1 December 2019 в 23:31
поделиться

Если вы используете метод jQuery .html () для поиска строки HTML, будьте осторожны, если этот HTML содержит какие-либо элементы, для которых зарегистрированы события - вы можете получить немного больше, чем вы рассчитывали.

Не используйте .html () для правильно сформированных фрагментов XML.

Моим быстрым решением было изменить порядок работы. Я просто выполнил привязку события jQuery после того, как данные были отправлены. Таким образом, я усвоил тяжелый урок, учитывая количество времени, которое я потратил на выдергивание волос, но, тем не менее, важный.

Я предполагаю, что вы используете 1.3.1, проблема которого была исправлена ​​в более поздних версиях. Так что просто обновите и, вероятно, все будет в порядке.

0
ответ дан 1 December 2019 в 23:31
поделиться

jQuery использует этот "экспандер" для привязки данных и событий к объектам. Похоже, что это работает вместе с кэшем данных и событий. Хотелось бы услышать более подробное объяснение.

4
ответ дан 1 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: