Справочник API
.context в jQuery
Содержание статьи
-
Категории: Plugin Authoring , Properties › Properties of jQuery Object Instances
Возвращает элемент (DOM узел), изначально использованный в качестве контекста при создании данного набора jQuery (по умолчанию обычно document).
Синтаксис и описание:
Добавлено в jQuery 1.3.context
Свойство .context хранило DOM-узел, переданный вторым аргументом в
jQuery()в качестве контекста поиска при создании набора (например, при поиске внутри iframe или XML-документа); если контекст не передавался явно, свойство обычно равнялосьdocument.Важно: это историческая страница. Свойство помечено устаревшим в jQuery 1.10 и 2.0 и полностью удалено в jQuery 3.0 — в актуальных версиях (3.7.1, 4.0) обращение к
$(...).contextвернётundefined, а не ошибку, что может маскировать проблему в старом коде.
Возвращаемое значение: (элемент) DOM-узел контекста, переданный при создании набора; чаще всего document.
Примечание:
.context в первую очередь обслуживал внутреннюю механику метода .live() — раннего способа делегирования событий, который сам был удалён в jQuery 1.9. С исчезновением .live() практическая нужда в .context тоже отпала.
Примечание:
Прямой замены свойству нет — в отличие от многих других удалённых методов, у .context нет современного эквивалента вида
.on()вместо.live(). Если контекст создания набора jQuery действительно нужен где-то в логике приложения, его нужно сохранять самостоятельно — например, в отдельной переменной в момент вызоваjQuery(selector, context), а не пытаться прочитать его позже с самого набора.В jQuery 3.x и 4.0:
Свойства нет ни в 3.7.1, ни в 4.0 (удалено ещё в 3.0). Если в проекте на восстановлении старого кода встречается
$(...).context, это верный признак, что фрагмент не обновлялся с эпохи jQuery 1.x — его стоит переписать так, чтобы контекст поиска элементов хранился явно, в переменной, а не считывался с результата выборки. Полный список подобных изменений — в статье jQuery 4.0: что изменилось.
Примеры:
Исторический код, читавший .context — работал до jQuery 3.0, сейчас вернёт undefined.
// jQuery 1.x–2.x var $items = $('li', someContainer); console.log($items.context); // было: someContainer // jQuery 3.x и 4.0 console.log($items.context); // undefined — свойства больше нетКак сохранить контекст самостоятельно, если он нужен дальше по коду.
var searchContext = document.getElementById('app-root'); var $items = $('li', searchContext); // Контекст храним отдельно, а не читаем с набора: function getSearchContext() { return searchContext; }