Это простой урок переведенный с целью помочь вам начать использовать jQuery. Если вы еще не имеете тестовую страницу, самое время ее сбацать:
<html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> </script> </head> <body> <a href="http://jquery.com/">jQuery</a> </body> </html> |
Рекомендую поставить реальный адрес к вашему экземпляру jQuery либо ссылку на гугл http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js.
Первая вещь, которую делают Javascript программисты это добавка примерно такого кода в страницу:
window.onload = function(){ alert("welcome"); } |
То есть ожидается появления модального окошка с надписью «превед» после загрузки страницы. Вероятно проблемой является то, что превед мы увидим после загрузки всех картинок в т.ч. рекламы.
Для решения подобных проблем, jQuery имеет простое выражение которое проверяет документ на готовность к манипуляциям, известное как событие ready:
$(document).ready(function(){ // Your code here }); |
Внутри события ready добавим обработчик события click (клики по ссылкам):
$(document).ready(function(){ $("a").click(function(event){ alert("Thanks for visiting!"); }); }); |
Сохраните ваш html и перезагрузите страницу. Клик по линку на странице будут вызывать появление всплывающего окна перед уходом на jquery.com.
Также вы можете запретить дефолтное поведение скрипта для кликов и массы других событий с помощью вызова event.preventDefault() в обрботчике event:
$(document).ready(function(){ $("a").click(function(event){ alert("Как видите, ссылка больше не приводит вас на jquery.com"); event.preventDefault(); }); }); |
Далее приведен пример готового html файла использующего jquery-библиотеку загружаемую с сервера гугла:
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("a").click(function(event){ alert("As you can see, the link no longer took you to jquery.com"); event.preventDefault(); }); }); </script> </head> <body> <a href="http://jquery.com/">jQuery</a> </body> </html> |
Другая частая задача это добавление (или удаление) CSS-класса.
Для начала добавим немного инфы о стилях в блок
<style type="text/css"> a.test { font-weight: bold; } </style> |
Далее добавим вызов функции addClass:
$("a").addClass("test"); |
Теперь все а элементы выделены жырным.
Для удаления класса нужно юзать removeClass:
$("a").removeClass("test"); |
В jQuery куча разных эффектов созданных для решения практически любых задач. Для того чтобы потестировать их поменяйте тестовый код на следующий:
$("a").click(function(event){ event.preventDefault(); $(this).hide("slow"); }); |
Теперь при клике на линк вы увидите как он медленно исчезнет.
Для обратного вызова функции без аргументов вы передаете его так:
$.get('myhtmlpage.html', myCallBack); |
Отметим, что вторым параметром здесь является просто название функции (но не в виде строки и без скобок). В JavaScript функции являются «гражданами первого сорта» и поэтому может быть принят во всем, как ссылки на переменные и осуществляется в более позднее время.
«Что делать, если у вас есть аргументы, которые вы хотите передать?», Спросите вы сами.
Проблема с вариантом $.get('myhtmlpage.html', myCallBack(param1, param2)); в том, что это выражение myCallBack (param1, param2) посчитается раньше чем придет в функцию. Javascript и расширения Jquery ожидает указатель на функцию, в подобных случаях, т.н. SetTimeout функцию.
В приведенном ниже примере создается анонимная функции (только блок операторов) и регистрирутся в качестве функции обратного вызова. Обратите внимание на использование 'function(){'. Анонимная функция делает ровно одну вещь: вызывает myCallBack, со значениями Param1 и Param2 в космической сфере:
$.get('myhtmlpage.html', function(){ myCallBack(param1, param2); }); |
Параметры param1 и param2 вычисляются как возвращаемые когда '$.get' доступен на странице.
оригинал: http://docs.jquery.com/How_jQuery_Works