# Черновое ревью — май 2018: legacy jQuery Статус: принято в публикационный слой 31 июля 2026 после независимого audit. Партия намеренно не перезаписывает `web/data/articles.json`: `web/data/editorial-revisions.mjs` накладывает ревизии только по стабильным slug. ## Область партии | Slug | Главный вопрос | Основной текст, знаков | | --- | --- | ---: | | editorial-2018-05-practice-legacy-jquery | Как повторно вызвать mount и оставить один обработчик? | 7 718 | | editorial-2018-05-mechanism-legacy-jquery | Почему прямой click пропадает после .html()? | 8 088 | | editorial-2018-05-field-legacy-jquery | Как держать один активный Ajax-запрос формы? | 8 729 | Размеры посчитаны без списка источников и HTML-разметки. Каждый текст отвечает на один вопрос, начинает с наблюдаемого сбоя и заканчивается последовательностью действий с ограничениями. ## Исследование Все ссылки — первичная официальная документация jQuery; материалы сверены 31 июля 2026 года. | Статья | Источники | | --- | --- | | Повторный mount | [.on()](https://api.jquery.com/on/), [.off()](https://api.jquery.com/off/) | | Замена DOM | [.html()](https://api.jquery.com/html/), [.on()](https://api.jquery.com/on/), [.off()](https://api.jquery.com/off/), [.data()](https://api.jquery.com/data/) | | Ajax-форма | [jQuery.ajax()](https://api.jquery.com/jQuery.ajax/), [.serialize()](https://api.jquery.com/serialize/), [.prop()](https://api.jquery.com/prop/), [.data()](https://api.jquery.com/data/), [.removeData()](https://api.jquery.com/removeData/), [deferred.always()](https://api.jquery.com/deferred.always/) | ## Ревью 1 — факты и техника **Пройдено.** - Для mount проверены: пространства имён событий, снятие обработчиков по namespace, различие прямой и делегированной привязки, а также версия .on()/.off() — jQuery 1.7+. - Для .html() проверено основное утверждение: jQuery удаляет данные и события дочерних узлов до замены содержимого. Ограничения делегирования для SVG и не всплывающих событий названы явно. Риск вставки непроверенной HTML-строки не выдан за проблему конкретного API — это предупреждение документации. - Для Ajax-формы проверены: состав .serialize(), динамическое свойство disabled через .prop(), хранение и удаление маркера через .data()/.removeData(), роли done, fail и always у jqXHR. always используется только для освобождения UI и не анализирует разнородные аргументы resolve/reject. - Серверные последствия не выдуманы: клиентский замок ограничен текущим DOM-экземпляром; при timeout текст не обещает, что операция не была выполнена. ## Ревью 2 — редактура и голос **Пройдено.** - Речь короткая и техническая: симптом → причина → проверка → действие. Нет обещаний «универсального» решения и абстрактных вступлений о важности темы. - Голос соответствует 2018 году: код на jQuery, IIFE, var, $.ajax; без искусственного переноса поздних фреймворков или роли техлида в раннюю заметку. - У каждой статьи свой сценарий, таблица, воспроизводимый код и порядок внедрения. Три текста не повторяют один и тот же вывод под разными заголовками. - Убрано неподтверждённое обобщение о распространённости конкретной версии jQuery в 2018 году; примеры лишь задают поддерживаемую версию. ## Ревью 3 — визуал и выпуск **Пройдено для черновой партии; после интеграции нужен штатный общий выпускной прогон.** - Три SVG валидированы командой xmllint --noout и открыты в локальном рендере. После финальной правки нет обрезанных заголовков, стрелок или кодовых строк. - У каждого будущего contentHtml есть один figure с осмысленными alt и подписью, одна таблица в обёртке div.table-scroll и три блока кода. - В существующих стилях .table-scroll имеет горизонтальную прокрутку, а таблица — min-width: 620px; это сохраняет читаемость на узком экране без сжатия ячеек. - Команда node --check web/scripts/upgrade-2018-05.mjs прошла. Команда node web/scripts/upgrade-2018-05.mjs --print-revisions печатает валидный JSON ровно трёх ревизий и не записывает архив. ## Перед интеграцией 1. Основной агент импортирует JSON из параметра --print-revisions и сопоставляет только три перечисленных slug. 2. Запускаются общий аудит партии и production-сборка. 3. На собранных страницах повторяется проверка таблиц в узком viewport, потому что эта ветка по задаче не изменяет articles.json. ## Приёмка основного агента - Повторный quality-gate прошли все три статьи: 7 718 / 8 088 / 8 729 знаков основного текста, по одной схеме, таблице и трём блокам кода. - Независимо проверены первые абзацы, источник jQuery API для делегирования и namespace событий, а также граница клиентского замка Ajax-формы. Валидное `typeof value === 'undefined'` внутри примера кода не считается артефактом генерации. - Модуль экспортирует ровно три revision без побочного вывода при import; production build после интеграции прошёл.