Домашнє завдання

  1. Збережіть собі в папку нового проекту файл jquery_homework_file.html, підключіть jQuery і файл ваших скриптів script.js.
  2. Дослідіть стилі даного файла, по можливості запам'ятайте назви класів.
  3. Виведіть в консоль кількість елементів списку .rainbow, приклад: "Rainbow count: 7".
  4. Добавте клас 'active' до списка .rainbow і всі елементи розфарбуйте у відповідні кольори класами col*.
  5. Виведіть в консоль текст і html-код елемента .bl цього списку.
  6. В списку #test розфарбуйте елементи test червоним кольором класом .active, елементи subtest - класом .passive.
  7. Першому елементу кожного списка сторінки задайте класом синю тінь для текста, останньому - зелену.
  8. Елементу .lol мають передувати 2 елемента з синьою та зеленою тінню, а також наступні 2 елемента повинні мати синю та зелену тінь. Висоту елемента .lol задати 40px, розмір шрифта і lineheight - 24px / 28px.
  9. В списку з title="links" текст посилань зробіть відповідним до його href (скопіюйте href у text).
  10. Посилання на FTP пофарбуйте класом у зелений колір.
  11. Знайдіть елемент .special, додайте його батьку клас 'specwrap', батьківському елементу .silver додайте клас 'active'.
  12. Пронумеруйте всіх батьків елемента .special атрибутом data-parent="..." числами 1, 2, 3, 4... починаючи від безпосереднього батька. Перегляньте код елементів у інспекторі об'єктів, має бути щось типу такого: <strong data-parent="1">
  13. Візьміть елемент #test, знайдіть всіх його дітей першого порядку (ті, що з текстом test), окрім елемента .lol, зробіть текст літерами у верхньому регістрі, додавши клас .upper.
  14. В елементі .week виберіть дітей 's, em, i, .big', скориставшись методом .filter(), добавте до них клас 'passive', щоб задати світлосірий колір тексту.
  15. В списку ul[title="links"] перед кожним елементом http-посилання добавте <li>_________</li>, а після кожного ftp-посилання - <li>^^^^^^^^^</li>.
  16. В списку #test кожному елементу "test" добавте на початок <b>!!!</b>, а до елементів subtest добавте в кінець <i>???</i>.
  17. Клонуйте список #test та добавте його в кінець веб-сторінки. Зауважте, що на одній сторінці не повинно бути двох елементів з однаковим id.
  18. Пронумеруйте елементи списку #test: 1. test, 2. test і т.д., видаліть кожен парний елемент списку (бажано без циклу, селектором :even). Якщо при цьому буде видалено список з елементами subtest, то змініть умову задачі: потрібно видалити непарні елементи.
  19. Очистіть елементи списку "subtest".
  20. Огорніть елементи .week та .week2 тегом div.col5.
  21. Огорніть всі списки разом тегом section.
  22. Виберіть всіх дітей елемента .week, і огорніть їх контент тегом span.check.
  23. Якщо зажати Shift і водити мишу по екрану - в консоль повинні виводитися імена тегів елементів, на які наводиться миша.
  24. При кліку на елементи списку .rainbow виводьте alert з іменем класу цього елемента і кольором фону через пробіл.
  25. При отриманні фокуса текстових полів форми підсвічуйте їх жовтим фоном (.col3).
  26. Виводьте в консоль букви, які нажимає користувач, знаходячись в текстових полях. Забороніть в полі телефона натискання клавіші 0 (return false;).
  27. Зніміть властивість checked з радіокнопок, добавте цю властивість до чекокса.
  28. Для елемента .check добавте метод, щоб при кліку в нього змінювався стан (клас 'active') і при цьому переключався чекбокс.
  29. При кліку на дітей елемента .week повинні з’являтися alert’и з текстом, що міститься в цих елементах.
  30. Аналогічно у елементів .week2, але якщо є атрибут data-click, то алерт має вивестися не більше стількох раз, як вказано в цьому параметрі, а якщо немає цього параметра - лише 1 раз.
  31. Добавте до .week ще один елемент <b>newday</b>, переконайтесь, що клік на нього не працює. Модифікуйте обробник подій так, щоб після динамічного створення цього елемента він також би ловив подію кліка.
  32. В список .wave добавте 30 елементів з текстом 'wave', зробіть "стадіонну хвилю" - при наведенні на елемент йому задається клас .wave1, його сусідам - .wave2, далі сусідам - .wave3, 4 і т.д. до .wave8.

Для чого вам jQuery

Ви можете знайти багато інформації, думок про те, що "скрипач не нужен".

Зазвичай автори цих статей і думок мало займаються фронтенд-кодінгом, більше спеціалізуючись на бекенді або займають якусь певну нішу типу обміну даними з сервером, спеціалісти з різноманітних ангулярів, нод і т.п.

Для чого потрібно знати jQuery:

  1. Цього вимагають роботодавці.
  2. jQuery став еталоном для багатьох інших бібліотек, їх будова, принципи роботи схожі з jQuery, тому розібратися в них вам буде значно простіше, швидше.
  3. Величезна база зручних jQuery-плагінів нікуди не дінеться ще багато років, для багатьох плагінів, типу слайдерів (галерей), таблиць даних немає ніяких адекватних альтернатив.
  4. В jQuery методи названі логічніше, працюють зрозуміліше, ніж в JS, тому бібліотеку можна вивчити за лічені години і писати складний код.
  5. Анімацію на JS досі доволі складно реалізувати, в CSS далеко не все працює так, як того хотілося б.
  6. Можна вигадувати свої велосипеди, але вони навряд чи будуть працювати швидше, розмір бібліотеки не буде меншим.
  7. jQuery - найрозповсюдженіша бібліотека, регулярно оновлюється, на відміну від багатьох своїх конкурентів.
  8. Принципова відмова від jQuery в проекті вимагає шукати більш досвідчених розробників, здорожчує проект за рахунок зарплат та витрат часу на розробку.

Багато моментів, про які писала пані Lea Verou (проблеми з переходом від натівних об'єктів до jQuery-об'єктів і назад, багатократне огортання змінних в оболонку) говорить не на її користь, про її недосвідченість, недостатню практику у jQuery, а також незнання цієї бібліотеки: в реальних великих проектах не так часто є потреба весь час скакати між натівними об'єктами та оболонкою. В маленьких проектах часто такі переходи взагалі не зустрічаються (окрім огортання this). Заплюсовані коментарі після статті в основному на підтримку jQuery.

Резюмуючи вищесказане - до всього необхідно підходити з розумом:

  1. Не варто підключати jQuery якщо вам хочеться скоротити свій JS з 20 строк кода до 5 (5 строк кода + файлик на 60-90 кб).
  2. Не варто підключати jQuery заради двох простих маленьких анімацій.
  3. Не варто підключати jQuery якщо хочеться використати простенький плагін, який можна написати за 5 хвилин на чистому JS.
  4. Варто підключити jQuery, якщо ви активно використовуєте інші бібліотеки і плагіни, залежні від нього (наприклад, Bootstrap).
  5. Варто підключити jQuery, якщо є альтернатива підключити декілька різних, менш популярних бібліотек, що реалізують потрібну вам функціональність: для роботи з DOM + для роботи з анімацією + для роботи з AJAX + для роботи з подіями (подружити між собою декілька різнокаліберних бібліотек буває значно важче, ніж використати одну універсальну).
  6. Варто підключити jQuery, якщо проект розробляють джуни, а не профі.
  7. Варто підключити jQuery, якщо вам терміново в короткі строки потрібно написати складний плагін.
  8. Варто оцінити свої можливості, і якщо є такі можливості, щоб відмовитися від jQuery - від нього варто відмовитися, якщо таких можливостей немає - краще його підключити і застосовувати.

jQuery - лише інструмент, доволі хороший, як молоток, зручний, дешевий, на всі 100% виконує свої функції.
В майстерні він необхідний, але навряд чи ви його будете застосовувати під час клеяння кораблика із сірників чи пришивання гудзика до сорочки.

Youtube: От jQuery к Vue.js - эволюция программирования на javascript (вебінар, 2 години).