jQuery - библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API для работы с AJAX. Сейчас разработка jQuery ведётся командой jQuery во главе с Джоном Резигом.
Девиз jQuery "write less, do more" (пиши меньше, делай больше) отражает ее главное предназначение.
Селекторы
Код jQuery как и код JavaScript состоит из последовательно идущих команд. Команды являются основной структурной единицей jQuery. Стандартный синтаксис jQuery команд:
$(селектор).метод();
Знак $ сообщает, что символы идущие после него являются jQuery кодом;
Селектор позволяет выбрать элемент на странице;
Метод задает действие, которое необходимо совершить над выбранным элементом. Методы в jQuery разделяются на следующие группы:
- Методы для манипулирования DOM;
- Методы для оформления элементов;
- Методы для создания AJAX запросов;
- Методы для создания эффектов;
- Методы для привязки обработчиков событий.
Некоторые JavaScript библиотеки тоже используют $ для обозначения своего кода. Для того, чтобы избежать конфликта имен между ними в jQuery предусмотрена команда noConflict(). С помощью команды noConflict() Вы можете заменить знак $ на любой другой.
let произвольное_имя = jQuery.noConflict();
С помощью селекторов Вы можете выбирать элементы на странице для применения к ним определенных действий.
- $('*') - Будут выбраны все элементы присутствующие на странице
- $("p") - Будут выбраны все элементы p, которые находятся на странице
- $(".par") - Будут выбраны все элементы на странице с class="par"
- $("#par") - Будет выбран первый элемент на странице с id="par"
- $("p > div") - Будут выбраны все элементы потомки div родительского элемента p
- $(this) - Позволяет выбрать текущий HTML элемент
- $("p.par") - Будут выбраны все элементы p на странице с class="par"
- $("p#par") - Будут выбраны все элементы p на странице с id="par"
- $(".par,.header,#heat") - Будут выбраны все элементы на странице со значениями атрибутов class="par", class="header" и id='heat'
- $("[src]") - Будут выбраны все элементы на странице, имеющие атрибут src
- $("[src='значение']") - Будут выбраны все элементы со значениям атрибута src="значение"
- $("[src$='.gif']") - Будут выбраны все элементы со значениями атрибута src заканчивающимися на .gif
- $("div#wrap .par1") - Будут выбраны все элементы с class=par1, которые находятся внутри элементов div с id=wrap
- $(":input") - Будут выбраны все input элементы на странице
- $(":тип") - Будут выбраны все input элементы с <input type='тип' />. Например :button выберет все <input type='button' /> элементы, :text выберет все <input type='text' /> элементы и т.д.
- $("div:first") - Будет выбран первый div элемент на странице
- $("div:last") - Будет выбран последний div элемент на странице
- $("li:even") - Будут выбраны все элементы списка с четными индексами. Так как нумерация индексов элементов начинается с 0, то по сути будут выбраны нечетные элементы т.е. 1й, 3й, 5й элементы списка и т.д
- $("li:odd") - Будут выбраны все элементы с нечетными индексами. Так как нумерация индексов элементов начинается с 0, то по сути будут выбраны четные элементы т.е. 2й, 4й, 6й элементы списка и т.д.
- $("li:eq(3)") - Будет выбран 4 элемент списка (нумерация элементов в списке начинается с нуля)
- $("li:gt(1)") - Будут выбраны все элементы списка индекс которых больше 1 (т.е. все элементы списка начиная с 3 элемента)
- $("li:lt(2)") - Будут выбраны все элементы списка индекс которых меньше 2 (т.е. первые 2 элемента списка)
- $(":header") - Будут выбраны все элементы на странице являющиеся заголовками (т.е. элементы h1, h2, h5 и т.д.)
- $(":animated") - Будут выбраны все анимированные элементы, которые находятся на странице
- $(":contains('web')") - Будут выбраны все элементы содержащие строку web
- $(":empty") - Будут выбраны все элементы не имеющие узлов потомков
- $(":hidden") - Будут выбраны все скрытые элементы на странице
- $(":visible") - Будут выбраны все видимые элементы находящиеся на странице
Из учебника по JavaScript Вы наверно помните, что выполнение кода до полной загрузки документа часто приводит к ошибкам. Дело в том, что скрипт может обратится к еще не загруженному содержимому, а это всегда приводит к ошибкам или неожиданным результатам. Для того, чтобы избежать этого мы часто помещали код в функцию, которая начинала выполнение только после полной загрузки документа.
В jQuery можно избавиться от преждевременного выполнения кода следующими способами:
//Первый способ:
$(document).ready(function() {
Код который будет выполнен после полной загрузки документа
});
//Второй способ:
$().ready(function() {
Код который будет выполнен после полной загрузки документа
});
//Третий способ:
$(function() {
Код который будет выполнен после полной загрузки документа
});
Для того, чтобы сократить размер кода Вы можете соединять команды jQuery в цепочки. Команды в цепочке будут выполняться поочередно слева направо.
//Код без сокращения
$("p").css("color","green");
$("p").css("font-size","30px");
//Сокращенный код
$("p").css("color","green").css("font-size","30px");
События
Обработчики событий - это функции, код которых исполняется только после совершения определенных действий. Общий вид определения обработчиков jQuery:
$(селектор).обработчик_события(function(){код_обработчика_события});
$(document).ready(function() {
$("p").mouseover(function(){$("p").css("color","green")});
$("p").mouseout(function(){$("p").css("color","black")});
});
$(document).ready(function() {
$("#but1").click(function(){alert("Вы нажали один раз на первую кнопку!");});
$("#but2").dblclick(function(){alert("Вы нажали два раза на вторую кнопку!");});
});
$(document).ready(function() {
$("#el1").focus(function(){$(this).attr("value","")});
$("#el1").blur(function(){$(this).attr("value","Введите ФИО")});
$("#el2").change(function(){ alert("Содержимое данного элемента было изменено.") });
});
С помощью jQuery Вы можете также вызывать обработчики событий привязанные к элементу. Например: $('#test').blur() вызовет обработчик blur у элемента с id='test'.
$(document).ready(function() {
// Зададим обработчик события, который будет выводить сообщение при нажатии на кнопку с id=but1
$("#but1").click(function(){alert("Вы нажали на кнопку с id=but1")});
// Вызовем обработчик click у элемента с id='but1'
$("#but1").click();
});
- blur() - Привязывает или вызывает функцию, код которой выполнится, когда выбранный элемент перестанет быть активным
- change() - Привязывает или вызывает функцию, код которой будет выполнен в случае изменения содержимого выбранного элемента
- click() - Привязывает или вызывает функцию, код которой выполнится, когда на выбранном элементе будет произведен щелчок мыши
- dblclick() - Привязывает или вызывает функцию, код которой выполнится, когда на выбранном элементе будет произведен двойной щелчок мыши
- focus() - Привязывает или вызывает функцию, код которой будет выполнен, когда выбранный элемент станет активным
- focusin() - Привязывает или вызывает функцию, код которой выполнится, когда выбранный элемент или один из его элементов потомков станет активным
- focusout() - Привязывает или вызывает функцию, код которой выполнится, когда выбранный элемент или один из его элементов потомков перестанет быть активным
- hover() - Привязывает одну или две функции к выбранному элементу. Код первой привязанной функции выполнится, когда на выбранный элемент будет наведен курсор мыши, а второй, когда курсор мыши покинет пределы этого элемента
- keydown() - Привязывает или вызывает функцию, код которой выполнится, когда на клавиатуре будет нажата клавиша
- keyup() - Привязывает или вызывает функцию, код которой выполнится, когда нажатая на клавиатуре клавиша будет отпущена
- mousedown() - Привязывает или вызывает функцию, код которой будет выполнен после нажатия клавиши мыши на выбранном элементе
- mouseenter() - Привязывает или вызывает функцию, код которой будет выполнен, когда на выбранный элемент будет наведен указатель мыши
- mouseleave() - Привязывает или вызывает функцию, код которой будет выполнен, когда указатель мыши будет выведен из границ выбранного элемента
- mousemove() - Привязывает или вызывает функцию, код которой будет выполнен при передвижении указателя мыши в границах выбранного элемента
- mouseout() - Привязывает или вызывает функцию, код которой будет выполнен, когда указатель мыши будет выведен из границ выбранного элемента
- mouseover() - Привязывает или вызывает функцию, код которой будет выполнен, когда на выбранный элемент будет наведен указатель мыши
- mouseup() - Привязывает или вызывает функцию, код которой будет выполнен, когда нажатая кнопка мыши будет отпущена
- ready() - Привязывает или вызывает функцию, код которой будет выполнен, когда страница будет полностью загружена
- resize() - Привязывает или вызывает функцию, код которой будет выполнен при изменении размера окна браузера
- scroll() - Привязывает или вызывает функцию, код которой будет выполнен при прокрутке содержимого элемента
- select() - Привязывает или вызывает функцию, код которой будет выполнен при выделении текста выбранного элемента
- submit() - Привязывает или вызывает функцию, код которой будет выполнен при отправлении содержимого выбранной формы
Объект event содержит информацию о произошедшем событии. Объект event создается для каждого произошедшего события, но для того, чтобы иметь возможность обращаться к его свойствам и методам его необходимо явно передать в обработчик события. Синтаксис:
$(селектор).событие(function(event){код_обработчика_события});
После того, как объект event был передан обработчику события, Вы можете обращаться к его свойствам и методам. В примере ниже с помощью объекта event мы будем выводить координаты, на которых находился курсор мыши во время того, как произошло событие.
$(document).ready(function() {
$("#square").click(function(event) {
$("#coord").css("display","block");
$("#x").html(event.pageX);
$("#y").html(event.pageY);
});
});
Свойства event:
- currentTarget - Содержит имя DOM элемента, в котором произошло событие
- data - Содержит дополнительные данные переданные обработчику события во время привязки его к элементу
- pageX - Содержит координаты указателя мыши по оси X во время вызова события
- pageY - Содержит координаты указателя мыши по оси Y во время вызова события
- result - Содержит последнее значение возвращенное вызванным ранее обработчиком события
- target - Содержит имя DOM элемента, который вызвал событие
- timeStamp - Содержит количество прошедших с 1 Января 1970 года миллисекунд до вызова данного события
- type - Содержит тип (название) произошедшего события
- which - Содержит код кнопки, которая была зажата во время вызова данного события
Методы event:
- isDefaultPrevented() - Позволяет узнать был ли вызван метод preventDefault() для данного элемента
- isImmediatePropagationStopped() - Позволяет узнать был ли вызван метод stopImmediatePropagation() для данного элемента
- isPropagationStopped() - Позволяет узнать был ли вызван метод stopPropagation() для данного элемента
- preventDefault() - Предотвращает выполнение стандартного действия элемента
- stopImmediatePropagation() - Запрещает вызов остальных обработчиков события привязанных к элементу
- stopPropagation() - Останавливает "всплытие" вызова события к родительским элементам
С помощью методов представленных ниже, Вы сможете управлять обработчиками событий.
- bind() - Привязывает к выбранному элементу один обработчик события или более
- delegate() - Добавляет один обработчик события или более к элементам потомкам выбранного элемента
- one() - Привязывает к выбранному элементу один обработчик события или более. Привязанные обработчики при этом могут быть вызваны только один раз
- toggle() - Позволяет привязать к выбранному элементу несколько обработчиков событий, между вызовами которых можно переключатся по щелчку мыши
- trigger() - Вызывает указанный обработчик события у выбранного элемента
- triggerHandler() - Вызывает указанный обработчик события у выбранного элемента
- unbind() - Удаляет у выбранных элементов обработчики событий, которые были привязаны с помощью метода bind()
- undelegate() - Удаляет у выбранных элементов обработчики событий, которые были привязаны с помощью метода delegate()
Эффекты
Эффекты представленные ниже позволяют скрывать и отображать элементы различными способами:
- fadeIn() - Постепенно меняет прозрачность выбранного элемента делая его видимым
- fadeOut() - Постепенно меняет прозрачность выбранного элемента делая его невидимым
- fadeTo() - Постепенно меняет прозрачность выбранного элемента до указанного значения
- hide() - Скрывает выбранный элемент
- show() - Отображает скрытый элемент
- slideDown() - Постепенно изменяет высоту выбранного элемента делая его видимым
- slideToggle() - Применяет к выбранному элементу метод slideDown() если он невидим и slideUp() если он отображен
- slideUp() - Постепенно изменяет высоту выбранного элемента делая его невидимым
$(document).ready(function(){
$("#but1").click(function(){$("#par1").fadeOut(3000)});
$("#but2").click(function(){$("#par1").fadeIn(3000)});
$("#but3").click(function(){$("#par1").fadeTo(3000,0.3)});
$("#but4").click(function(){$("#par1").fadeTo(3000,0.8)});
$("#but5").click(function(){
$("#par1").fadeOut(3000,function(){
alert("Абзац был полностью скрыт.");
});
});
});
С помощью методов перечисленных ниже Вы можете создать на Ваших страницах анимацию:
- animate() - Выполняет заданную анимацию для выбранного элемента
- clearQueue() - Очищает очередь функций выбранного элемента
- delay() - Устанавливает задержку вызова следующей функции в очереди выбранного элемента
- dequeue() - Вызывает следующую функцию в очереди выбранного элемента
- stop() - Останавливает выполнение анимации для выбранного элемента
- queue() - Позволяет добавлять функции в очередь выбранного элемента
$(document).ready(function() {
$("#but1").click(function() {
$("p").animate({fontSize:30},2000);
$("p").animate({top:220},2000);
$("p").animate({fontSize:"1em"},2000);
$("p").animate({left:320},2000);
$("p").animate({top:0,left:0},2000);
});
});
DOM
С помощью методов перечисленных ниже Вы можете производить различные манипуляции над DOM:
- add() - Добавляет указанный элемент к группе выбранных элементов
- addClass() - Добавляет указанный класс или классы выбранному элементу
- after() - Вставляет указанное содержимое после выбранного элемента
- append() - Вставляет указанное содержимое в конце содержимого выбранного элемента
- appendTo() - Вставляет указанное содержимое в конце содержимого выбранного элемента
- attr() - Вставляет новое или возвращает текущее значение указанного атрибута выбранного элемента
- before() - Вставляет указанное содержимое перед выбранным элементом
- children() - Возвращает все элементы потомки указанного элемента
- contents() - Возвращает все элементы потомки указанного элемента включая текстовые узлы и узлы комментарии
- clone() - Позволяет скопировать выбранный элемент
- detach() - Удаляет выбранный элемент (при этом сохраняя его копию)
- empty() - Удаляет содержимое выбранного элемента и всех его элементов потомков
- eq() - Позволяет выбрать элемент из группы элементов по его порядковому номеру
- first() - Возвращает первый элемент из группы выбранных элементов
- hasClass() - Проверяет содержит ли выбранный элемент класс с указанным именем
- html() - Устанавливает новое или возвращает текущее содержимое выбранного элемента
- insertAfter() - Вставляет новый (или перемещает существующий) элемент после выбранного элемента
- insertBefore() - Вставляет новый (или перемещает существующий) элемент перед выбранным элементом
- last() - Возвращает последний элемент из группы выбранных элементов
- next() - Возвращает следующий элемент брат за выбранным элементом
- nextAll() - Возвращает все элементы братья, которые следуют за выбранным элементом
- parent() - Возвращает родительский элемент выбранного элемента
- prev() - Возвращает предыдущий элемент брат выбранного элемента
- prevAll() - Возвращает все элементы братья, которые следуют перед выбранным элементом
- prepend() - Вставляет указанное содержимое в начало содержимого выбранного элемента
- prependTo() - Вставляет указанное содержимое в начало содержимого выбранного элемента
- remove() - Удаляет выбранный элемент
- removeAttr() - Удаляет указанный атрибут у выбранного элемента
- removeClass() - Удаляет у выбранного элемента один класс или более
- replaceAll() - Заменяет текущий элемент новым содержимым
- replaceWith() - Заменяет текущий элемент новым содержимым
- siblings() - Возвращает все элементы братья указанного элемента
- text() - Устанавливает новое или возвращает текущее текстовое содержимое выбранного элемента
- toggleClass() - Поочередно присваивает указанные классы выбранному элементу
- unwrap() - Удаляет родительский элемент выбранного элемента
- val() - Устанавливает новое или возвращает текущее содержимое атрибута value выбранного элемента
- wrap() - Оборачивает каждый выбранный элемент указанным тэгом (или группой тэгов)
- wrapAll() - Оборачивает группу выбранных элементов указанным тэгом (или группой тэгов)
- wrapInner() - Оборачивает содержимое каждого выбранного элемента указанным тэгом (или группой тэгов)
CSS
С помощью методов перечисленных ниже Вы можете производить различные манипуляции над оформлением элементов:
- addClass() - Добавляет указанный класс или классы выбранному элементу
- css() - Позволяет узнать текущее или установить новое значение указанному CSS свойству (или свойствам) выбранного элемента
- hasClass() - Проверяет содержит ли выбранный элемент класс с указанным именем
- height() - Позволяет узнать текущую или установить новую высоту выбранному элементу
- offset() - Позволяет узнать текущее или установить новое местоположение выбранного элемента относительно границ текущего документа
- position() - Позволяет узнать текущее местоположение выбранного элемента относительно родительского
- removeClass() - Удаляет у выбранного элемента один класс или более
- scrollLeft() - Позволяет узнать текущую или установить новую позицию полосы прокрутки выбранного элемента по вертикали
- scrollTop() - Позволяет узнать текущую или установить новую позицию полосы прокрутки выбранного элемента по горизонтали
- toggleClass() - Поочередно присваивает указанные классы выбранному элементу
- width() - Позволяет узнать текущую или установить новую ширину выбранному элементу
AJAX
С помощью JavaScript Вы можете создавать асинхронные запросы и отправлять их на сервер. Использование асинхронных запросов позволяет значительно ускорить загрузку страниц, так как в этом случае обновляться будет только та часть страницы, которая содержит новые данные, а не страница целиком. Техника использования асинхронных запросов называется AJAX - Asynchronous JavaScript And XML (Асинхронный JavaScript и XML).
- $.ajax() - Выполняет AJAX запрос
- ajaxComplete() - Определяет функцию, код которой будет выполнен когда AJAX запрос будет совершен
- ajaxError() - Определяет функцию, код которой будет выполнен если во время выполнения AJAX запроса произойдет ошибка
- ajaxSend() - Определяет функцию, код которой будет выполнен перед отправлением AJAX запроса на сервер
- $.ajaxSetup() - Позволяет установить данные для будущих AJAX запросов
- ajaxStart() - Определяет функцию, код которой будет выполнен перед тем, как первый AJAX запрос из группы запросов будет отправлен на сервер
- ajaxStop() - Определяет функцию, код которой будет выполнен, когда последний AJAX запрос из группы запросов будет совершен
- ajaxSuccess() - Определяет функцию, код которой будет выполнен если AJAX запрос будет совершен успешно
- $.get() - Позволяет загрузить данные с сервера используя HTTP запрос GET
- $.getJSON() - Позволяет загрузить JSON - данные с сервера используя HTTP запрос GET
- $.getScript() - Позволяет загрузить с сервера JavaScript код и исполнить его
- load() - Позволяет загрузить данные с сервера и вставить их в содержимое выбранного HTML элемента
- $.param() - Позволяет создать сериализованное представление массива или объекта
- $.post() - Позволяет загрузить данные с сервера используя HTTP запрос POST
- serialize() - Позволяет закодировать группу элементов формы как строку для отправки с помощью AJAX запроса
- serializeArray() - Позволяет закодировать группу элементов формы как массив из их имен и значений