Программирование

Основное руководство по JQuery для программистов на Javascript

Основное руководство по JQuery для программистов на Javascript

JQuery — одна из самых популярных библиотек JavaScript на планете ( что такое JavaScript ). На момент своего появления JavaScript (далее именуемый JS ) находился в совершенно другом месте. 14 января 2006 года был объявлен день jQuery на BarCampNYC . JS все еще не хватало — все браузеры поддерживали его части, но для соответствия требовалось множество хаков и обходных путей.

JQuery пришел и изменил все. JQuery сделал очень простым для написания кода, совместимого с браузером. Вы можете анимировать веб-страницы, не имея степени в области компьютерных наук — ура! Десять лет спустя jQuery остается королем, и если вы никогда не использовали его раньше, что вы можете с ним сделать?

Помимо ознакомления с вашими навыками JavaScript, вы можете прочитать некоторые учебники по HTML и CSS. если вы не знакомы с ними.

Мы ввели jQuery выше, поэтому в этом руководстве по JQuery основное внимание будет уделено кодированию.

Начиная

jquery_snippet

Возможно, вам знаком JS-способ выбора идентификаторов из объектной модели документа ( DOM ):

document.getElementById('foo'); 

Ну, JQuery делает еще один шаг вперед. Вам не нужно вызывать разные методы для выбора классов, идентификаторов или нескольких элементов. Вот как вы выбираете идентификатор:

 $('#bar'); 

Легко ли? Это точно такой же синтаксис, чтобы выбрать практически любой элемент DOM. Вот как вы выбираете классы:

 $('.baz'); 

Вы также можете проявить творческий подход к реальной силе. Это выбирает все элементы td внутри таблицы, кроме первого.

 $('table td').not(':first'); 

Обратите внимание, как имена селекторов совпадают почти точно с их аналогами CSS. Вы можете назначить объекты обычным переменным JS:

 var xyzzy = $('#parent .child'); 

Или вы можете использовать переменные jQuery:

 var $xyzzy = $('#parent .child'); 

Знак доллара используется исключительно для обозначения того, что эта переменная является объектом jQuery, что очень полезно в сложных проектах.

Вы можете выбрать родителя элемента:

 $('child').parent(); 

Или братья и сестры:

 $('child').siblings(); 

Вы должны выполнить свой код, как только браузер будет готов. Вот как вы это делаете:

 $(document).ready(function() { console.log('ready!'); }); 

Больше силы

html_table

Теперь, когда вы знаете основы, давайте перейдем к более сложным вещам. Учитывая HTML-таблицу:

 <table id="cars"> <tr> <th>Make</th> <th>Model</th> <th>Color</th> </tr> <tr> <td>Ford</td> <td>Escort</td> <td>Black</td> </tr> <tr> <td>Mini</td> <td>Cooper</td> <td>Red</td> </tr> <tr id="fordCortina"> <td>Ford</td> <td>Cortina</td> <td>White</td> </tr> </table> 

Скажем, вы хотите, чтобы каждый второй ряд был другого цвета (известный как полоски зебры ). Теперь вы можете использовать CSS для этого:

 #cars tr:nth-child(even) { background-color: red; } 

html_table_striped

Вот как этого можно добиться с помощью jQuery:

 $('tr:even').addClass('even'); 

Это достигнет того же самого, при условии, что даже класс определен в CSS. Обратите внимание, что полная остановка перед именем класса не нужна. Обычно они требуются только для основного селектора. В идеале, вы должны использовать CSS для этого, хотя это не имеет большого значения.

JQuery также может скрывать или удалять строки:

 $('#fordCortina').hide(); $('#fordCortina').remove(); 

Вам не нужно скрывать элемент перед его удалением.

функции

Функции JQuery похожи на JS. Они используют фигурные скобки и могут принимать аргументы. Где это становится действительно интересным, через обратные вызовы. Обратные вызовы могут применяться практически к любой функции jQuery. Они указывают кусок кода, который будет запущен после завершения основного действия. Это обеспечивает огромную функциональность. Если они не существуют, и вы написали свой код, ожидая, что он будет работать линейно, JS продолжит выполнение следующей строки кода, ожидая предыдущую. Обратные вызовы обеспечивают выполнение кода только после завершения исходной задачи. Вот пример:

 $('table').hide(function(){ alert('MUO rules!'); }); 

Будьте предупреждены — этот код выполняет предупреждение для каждого элемента. Если ваш селектор находится на странице несколько раз, вы получите несколько предупреждений.

Вы можете использовать обратные вызовы с другими аргументами:

 $('tr:even').addClass('even', function(){ console.log('Hello'); }); 

Обратите внимание, что после закрывающих скобок стоит точка с запятой. Обычно это не требуется для функции JS, однако этот код по-прежнему считается в одной строке (поскольку обратный вызов находится в квадратных скобках).

Анимация

javascript_animation

JQuery позволяет очень легко анимировать веб-страницы. Вы можете добавлять или исчезать элементы:

 $('.fade1').fadeIn('slow'); $('#fade2').fadeOut(500); 

Вы можете указать три скорости (медленная, средняя, ​​высокая) или число, представляющее скорость в миллисекундах (1000 мс = 1 секунда). Вы можете анимировать практически любой элемент CSS. Это оживляет ширину селектора от его текущей ширины до 250 пикселей.

 $('foo').animate({width: '250px'}); 

Невозможно оживить цвета. Вы также можете использовать обратные вызовы с анимацией:

 $('bar').animate({height: '250px'}, function(){ $('bar').animate({width: '50px'} }); 

Loops

Петли действительно блестят в jQuery. Each () используется для итерации по каждому элементу данного типа:

 $('li').each(function() { console.log($(this)); }); 

Вы также можете использовать индекс:

 $('li').each(function(i) { console.log(i + ' - ' + $(this)); }); 

Это напечатало бы 0 , затем 1 и так далее.

Вы также можете использовать each () для перебора массивов, как в JS:

 var cars = ['Ford', 'Jaguar', 'Lotus']; $.each(cars, function (i, value){ console.log(value); }); 

Обратите внимание на дополнительный аргумент под названием value — это значение элемента массива.

Стоит отметить, что каждый () иногда может быть медленнее, чем ванильные циклы JS. Это связано с дополнительными издержками обработки, которые выполняет jQuery. В большинстве случаев это не проблема. Если вы беспокоитесь о производительности или работаете с большими наборами данных, сначала попробуйте сравнить ваш код с jsPerf .

AJAX

Асинхронный JavaScript и XML или AJAX действительно очень прост с jQuery. AJAX поддерживает огромное количество Интернета, и это то, что мы рассмотрели в части 5 нашего учебника по пособие по . Он предоставляет способ частичной загрузки веб-страницы — нет причин перезагружать всю страницу, например, если вы хотите обновить только футбольный счет. В jQuery есть несколько методов AJAX, самым простым из которых является load () :

 $('#baz').load('some/url/page.html'); 

Это выполняет AJAX-вызов указанной страницы ( some / url / page.html ) и помещает данные в селектор. Просто!

Вы можете выполнять HTTP GET запросы:

 $.get('some/url', function(result) { console.log(result); }); 

Вы также можете отправить данные, используя POST :

 $.post('some/other/url', {'make':'Ford', 'model':'Cortina'}); 

Отправить данные формы очень просто:

 $.post('url', $('form').serialize(), function(result) { console.log(result); } 

Функция serialize () получает все данные формы и подготавливает их к передаче.

обещания

Обещания используются для отсроченного исполнения. Их может быть сложно выучить, однако jQuery делает их немного менее хлопотными. ECMAScript 6 вводит собственные обещания JS, однако поддержка браузеров в лучшем случае ненадежна. На данный момент обещания jQuery намного лучше в кросс-браузерной поддержке.

Обещание почти так же, как звучит. Код обещает вернуться на более поздней стадии, когда он будет завершен. Ваш движок JavaScript перейдет к выполнению некоторого другого кода. Как только обещание разрешается (возвращается), может быть запущен другой фрагмент кода. Об обещаниях можно думать как обратные вызовы. Документация по jQuery объясняется более подробно.

Вот пример:

 // dfd == deferred var dfd = $.Deferred(); function doThing() { $.get('some/slow/url', function() { dfd.resolve(); }); return dfd.promise(); } $.when(doThing()).then(function(){ console.log('YAY, it is finished'); }); 

Обратите внимание, как выполняется обещание ( dfd.promise () ), и оно разрешается только после завершения вызова AJAX. Вы можете использовать переменную для отслеживания нескольких вызовов AJAX и выполнять еще одну задачу только после того, как все они выполнены.

Советы по производительности

Ключом к снижению производительности вашего браузера является ограничение доступа к DOM. Многие из этих советов могут относиться и к JS, и вы можете профилировать свой код, чтобы увидеть, является ли он неприемлемо медленным. В нынешний век высокопроизводительных движков JavaScript небольшие узкие места в коде часто могут остаться незамеченными. Несмотря на это, все же стоит попытаться написать самый быстрый код, который вы можете.

Вместо поиска DOM для каждого действия:

 $('foo').css('background-color', 'red'); $('foo').css('color', 'green'); $('foo').css('width', '100px'); 

Сохраните объект в переменной:

 $bar = $('foo'); $bar.css('background-color', 'red'); $bar.css('color', 'green'); $bar.css('width', '100px'); 

Оптимизируйте свои циклы. Учитывая ваниль для цикла:

 var cars = ['Mini', 'Ford', 'Jaguar']; for(int i = 0; i < cars.length; ++i) { // do something } 

Хотя это и не так уж плохо, этот цикл можно сделать быстрее. Для каждой итерации цикл должен вычислять значение массива cars ( cars.length ). Если вы сохраните это в другой переменной, производительность может быть увеличена, особенно если вы работаете с большими наборами данных:

 for(int i = 0, j = cars.length; i < j; ++i) { // do something } 

Теперь длина массива автомобилей хранится в j . Это больше не нужно рассчитывать на каждой итерации. Если вы используете each () , вам не нужно этого делать, хотя должным образом оптимизированный vanilla JS может превзойти jQuery. Где действительно блестит jQuery, так это скорость разработки и отладки. Если вы не работаете с большими данными, jQuery обычно более чем быстр.

Теперь вы должны знать достаточно основ, чтобы стать ниндзя jQuery!

Вы регулярно используете jQuery? Вы перестали использовать его по каким-либо причинам? Дайте нам знать ваши мысли в комментариях ниже!

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика