О насБлогКонтакты
Frontend разработка20 октября 2006 г. 3 мин 100Обновлено: 22 июня 2026 г.

jQuery 1.0: библиотека, которая сделала JavaScript пригодным для работы (2006)

AunimedaAunimeda
📋 Содержание

До jQuery JavaScript был чем-то, что вы терпели. Писали потому что приходилось - валидация форм, выпадающие меню, Ajax-запросы. Но каждая фича требовала написания browser-detection кода, параллельных реализаций для IE/Firefox/Safari и отладки различий, не имевших разумного объяснения.

26 августа 2006-го Джон Резиг показал jQuery на BarCamp NYC. 19 КБ в сжатом виде. «Write less, do more» - напишите меньше, сделайте больше.

Я начал использовать его на той же неделе. За два месяца убрал все собственноручно написанные DOM-утилиты за последние четыре года. jQuery делал всё то же самое, лучше, в меньшем коде, и работал в IE 6.


Что jQuery решил: кросс-браузерный ад

// БЕЗ jQuery - манипуляция DOM в 2005 году
// Добавить класс всем <li> в конкретном <ul>

// Только IE:
var items = document.all['menu'].children;
for (var i = 0; i < items.length; i++) {
    if (items[i].tagName === 'LI') {
        items[i].className += ' active';
    }
}

// События: IE vs W3C
function addEvent(el, type, fn) {
    if (el.addEventListener) {
        el.addEventListener(type, fn, false);  // W3C
    } else if (el.attachEvent) {
        el.attachEvent('on' + type, fn);        // IE
    }
}

// С jQuery 1.0 - одна строка, работает везде:
$('#menu li').addClass('active');
$('#menu li').click(function() {
    $(this).toggleClass('active');
});

Селекторный движок: CSS как язык запросов к DOM

В 2006 году document.querySelector() не существовал ни в одном браузере (появился в 2008). jQuery реализовал CSS-селекторы в чистом JavaScript:

// jQuery делал возможным в 2006 - ничего из этого не было нативным

// Все нечётные строки таблицы с классом data-table
$('table.data-table tr:odd').css('background-color', '#f5f5f5');

// Обязательные пустые поля формы
$('form input[required]').filter(function() {
    return $(this).val() === '';
}).addClass('error');

// Нажатые чекбоксы
$('#myform input[type="checkbox"]:checked').each(function() {
    console.log($(this).val() + ' отмечен');
});

// Всё это работало. В IE 6.
// Внутри - самодельный CSS-парсер, Sizzle, опенсорсен в 2009.

Ajax в jQuery

До jQuery Ajax = 15 строк шаблонного кода (создание XHR, заголовки, onreadystatechange). С jQuery:

// jQuery 1.0 Ajax - 2006
$.ajax({
    url: '/api/user.php',
    type: 'GET',
    data: { id: userId },
    dataType: 'html',
    beforeSend: function() {
        $('#panel').html('<p>Загрузка...</p>');
    },
    success: function(html) {
        $('#panel').html(html);
    },
    error: function(xhr) {
        $('#panel').html('<p>Ошибка загрузки.</p>');
    }
});

// Или ещё короче:
$('#panel').load('/api/user.php?id=' + userId);

// JSON:
$.getJSON('/api/stats.php', function(data) {
    $('#visits').text(data.visits);
});

Анимации: то, чего хотел каждый клиент

// ДО jQuery: аккордеон вручную - 30 строк с setInterval
// С jQuery:
$('.section-header').click(function() {
    $(this).next('.section-body').slideToggle(300);
});

// Плавное появление/исчезновение:
$('#notification').fadeIn(200).delay(3000).fadeOut(500);

// Цепочки - каждый метод возвращал $(this):
$('#submit-btn')
    .css('background', '#ccc')
    .attr('disabled', true)
    .text('Отправка...');

Нормализация событий IE 6

IE 6 занимал 80%+ рынка в 2006 году. jQuery поглощал все его причуды:

// jQuery делал прозрачно:
$(el).css('opacity', 0.5);
// IE получал:    filter: alpha(opacity=50)
// Остальные:     opacity: 0.5
// Разработчик писал одну строку.

$('a').click(function(e) {
    e.preventDefault();    // внутри: e.returnValue = false для IE
    e.stopPropagation();   // внутри: e.cancelBubble = true для IE
});

Почему jQuery победил Prototype, MooTools и Dojo

jQuery не расширял нативные прототипы (в отличие от Prototype.js), был маленьким (в отличие от Dojo), и его селекторный API был интуитивен для всех, кто знал CSS.

К 2009 году jQuery был на большем числе сайтов, чем любая другая JS-библиотека. К 2012 - на более чем 50% всех сайтов. Он всё ещё присутствует на большинстве веб-страниц сегодня.

Ландшафт JavaScript до и после августа 2006 года - принципиально разные вещи. До: браузерный JavaScript был болью, которую минимизировали. После: это был инструмент, который хотелось использовать.

Читайте также

Node.js vs Bun vs Deno 2026: какой JavaScript runtime выбратьaunimeda
Backend разработка

Node.js vs Bun vs Deno 2026: какой JavaScript runtime выбрать

Bun 1.x стабилен в production. Deno 2.0 поддерживает npm. Node.js 22 запускает TypeScript нативно. Реальные бенчмарки, сравнение экосистем и конкретные рекомендации - для новых и существующих проектов.

State of JavaScript 2026: что изменилось и куда движется экосистемаaunimeda
Веб-разработка

State of JavaScript 2026: что изменилось и куда движется экосистема

Vite обошёл webpack. TypeScript - дефолт для новых проектов. React сохраняет доминирование, но Signal-based фреймворки растут. AI-assisted coding меняет что значит 'написать код'. Честный разбор состояния JavaScript-экосистемы в 2026.

Разработка сайта в Самаре в 2026 году - цены, сроки, технологииaunimeda
Веб-разработка

Разработка сайта в Самаре в 2026 году - цены, сроки, технологии

Сколько стоит разработка сайта в Самаре в 2026 году. Реальные цены на лендинги, корпоративные сайты и интернет-магазины. Что влияет на стоимость и как выбрать подрядчика.

Нужна IT-разработка для вашего бизнеса?

Разрабатываем сайты, мобильные приложения и AI-решения для бизнеса в России. Бесплатная консультация.

Разработка сайтов

Получить консультацию Все статьи