jQuery Part II

для Epic Skills

На прошлом занятии мы узнали, что

Вычисляем
по селектору

Фильтрация селекторов по типу

jQuery всегда знает,
где скрытые элементы,
но не может получить
размеров и координат

Фильтрация селекторов по типу

Фильтрация селекторов по состоянию

jQuery знает, куда ты двигаешь курсор,
но только в пределах документа

Фильтрация селекторов по состоянию

Манипулируем

Манипуляции: вставка рядом с элементом

Манипуляции: копирование элемента

.clone() - вернёт копию текущего элемента
Пример использования:
$('.cat').clone().appendTo('.home')

Аккуратнее с копированием! Атрибут id у разных элементов не должен повторяться, это не валидно.

Получаем значения

Значения атрибутов

Возвращают значение только первого элемента коллекции

Значения полей

Возвращают значение только первого элемента коллекции

Сохраняем данные

Получаем размеры

Высота

Ширина

Работаем с наборами

Обход набора

.each(function(index, node)) - применить функцию к каждому элементу набора

$(".cat").height()
            $(".cat").each(function(index, element) {
              $(this).height()
            });
        

Позиционируем

Координаты относительно края страницы

Координаты считаются и задаются от левого верхнего угла страницы до левого верхнего угла элемента

Указываются только числами, без единиц измерения
Нельзя получить координаты скрытых или спрятанных элементов

Координаты относительно родителя

Координаты считаются и задаются от левого верхнего угла родительского элемента до левого верхнего угла элемента

Указываются только числами, без единиц измерения
Нельзя получить координаты скрытых или спрятанных элементов

Ближайший позиционированный родитель

.offsetParent() - получить ближайшего предка с указанным позиционированием (relative, absolute или fixed)

Прокрученное расстояние

.scrollTop() - получить расстояние вертикального скролла

.scrollTop(30) - задать расстояние вертикального скролла

.scrollLeft() - получить расстояние горизонтального скролла

.scrollLeft(40) - задать расстояние горизонтального скролла

Анимируем

прямоугольник

По-умолчанию #orange имеет абсолютное позиционирование,
right: 15% и bottom: 15%

            $("#orange").click(function() {
            
            });
        

Функции плавности

$

Обрабатываем события

Обработчики событий

.on('click', fun) - следить за кликами на элементе и каждый раз вызывать функцию fun

.one('click', fun) - следить за кликами на элементе, при первом клике вызвать функцию fun, потом удалить обработчик клика

.off('click', fun) - удаление обработчика клика с этой функцией

Все существующие события

Обработчики не созданных эл-тов

Можно обработать в том числе на ещё не появившиеся элементы

$(document).one('click', '.modal', func) - следить за кликами на всём документе. Каждый раз проверять, произошёл ли клик на элементе с классом modal. Если да, то вызывать функцию funс

Обрабатываем формы

Собираем данные с формы

.serialize() - вернёт GET-значение, собранное из данных формы

GET-form
Blocked-form (write serialize)
Ajax-sended form

Отправка ajax при отправке формы

$.ajax() - способ обмена данными без обновления страницы

            $('#test-form3').on('submit', function(event) {
            
            });
        

Пример ajax-запроса

            $.ajax({
              url: "http://httpbin.org/get",
              dataType: 'html',
              data: $(this).serialize()
            })
        

События ajax-запросов

            $.ajax({...})
              .done(function(context) { alert("success") })
              .fail(function(context) { alert("success") })
              .always(function(context) { alert("success") })
        
Подробнее про ajax

jQuery плагины

Слайдеры

Slick

Слайдеры

Owl Carousel 2

Parallax

Счётчик обратного отсчёта

Countdown

Попапы, модалки, тултипы

Magnific Popup

Анимации

Animate.css