В jQuery реализован свой механизм реагирования на события, возникающие на HTML странице.
Что такое события?
Все действия посетителей, на которые веб-страница может реагировать тем или иным способом, называются событиями.
Событие представляет тот самый момент, когда что-то происходит.
Например:
- передвижение курсора через элемент
- выбор радио кнопки
- нажатие на элемент
Обычно по отношению к событию говорят, что оно возникло.
В следующей таблице приведены некоторые общие события DOM:
События мыши | События клавиатуры | События формы | События документа/окна |
---|---|---|---|
click | keypress | submit | load |
dblclick | keydown | change | resize |
mouseenter | keyup | focus | scroll |
mouseleave | blur | unload |
Синтаксис jQuery для методов событий
В jQuery у большинства событий DOM есть эквивалентные методы jQuery.
Например, чтобы установить событие click (нажатие кнопки мыши) всем параграфам на странице, можно сделать следующее:
$("p").click();
Следующий шаг — это определить, что будет происходить, когда событие возникнет. Для этого нужно передать в событие функцию:
$("p").click(function(){
// здесь идет реакция на событие!!
});
Часто используемые методы событий jQuery
$(document).ready()
Метод $(document).ready() позволяет выполнять функцию, когда документ полностью загружен. Об этом событии рассказывалось в главе Синтаксис jQuery.
click()
Метод click() присоединяет функцию обработчика события к элементу HTML, которая выполняется, когда пользователь "кликает" мышкой на элемент HTML.
В следующем примере, когда возникает событие "нажатие кнопки мыши" на элементе <p>, элемент <p> скрывается:
$("p").click(function(){
$(this).hide();
});
dblclick()
Метод dblclick() присоединяет функцию обработчика события к элементу HTML, которая выполняется, когда пользователь совершает двойное нажатие мышкой на элемент HTML:
$("p").dblclick(function(){
$(this).hide();
});
mouseenter()
Метод mouseenter() присоединяет функцию обработчика события к элементу HTML, которая выполняется, когда указатель мыши заходит на элемент HTML:
$("#p1").mouseenter(function(){
alert("Вы зашли на элемент p1!");
});
mouseleave()
Метод mouseleave() присоединяет функцию обработчика события к элементу HTML, которая выполняется, когда указатель мыши выходит за границы элемента HTML:
$("#p1").mouseleave(function(){
alert("Пока! Вы покидаете элемент p1!");
});
mousedown()
Метод mousedown() присоединяет функцию обработчика события к элементу HTML, которая выполняется, когда нажата любая из стандартных клавиш мыши (левая, средняя или правая) на элементе HTML:
$("#p1").mousedown(function(){
alert("Кнопка мыши нажата на p1!");
});
mouseup()
Метод mouseup() присоединяет функцию обработчика события к элементу HTML, которая выполняется, когда отпущена любая из стандартных клавиш мыши (левая, средняя или правая) на элементе HTML:
$("#p1").mouseup(function(){
alert("Mouse up over p1!");
});
hover()
Метод hover() в параметрах принимает две функции и по сути является комбинацией методов mouseenter() и mouseleave().
Первая функция выполняется, когда указатель мыши заходит на элемент HTML, а вторая, когда указатель мыши покидает границы элемента HTML:
$("#p1").hover(function(){
alert("Вы заходите на элемент p1!");
},
function(){
alert("Пока! Вы покидаете элемент p1!");
});
focus()
Метод focus() присоединяет функцию обработчика события к полю HTML формы. Функция выполняется, когда поле формы получает фокус:
$("input").focus(function(){
$(this).css("background-color", "#cccccc");
});
blur()
Метод blur() присоединяет функцию обработчика события к полю HTML формы. Функция выполняется, когда поле формы теряет фокус:
$("input").blur(function(){
$(this).css("background-color", "#ffffff");
});
Метод on()
Метод on() присоединяет один или несколько обработчиков событий к выбранному элементу.
Присоединяем событие "нажатие кнопки мыши" к элементу <p>:
$("p").on("click", function(){
$(this).hide();
});
Присоединяем несколько событий к элементу <p>:
$("p").on({
mouseenter: function(){
$(this).css("background-color", "lightgray");
},
mouseleave: function(){
$(this).css("background-color", "lightblue");
},
click: function(){
$(this).css("background-color", "yellow");
}
});