Встановлення та відключення обробника подій. Програмний запуск події
.on() - метод встановлення обробників подій. Введений в 1.7. Поєднує в собі функціональність .bind(), .live(), .delegate(). Починаючи з 1.7 ці три методи вважаються застарілими
.off() - відміна обробника події, що встановлений за допомогою .on ()
.one() - встановлює обробник події на один раз
.trigger() - дозволяє для елемента програмно запустити подію
Приклади
.on()Метод встановлення обробників подій
Для блоку .tt встановленно подію .click ()Так само можна встановити будь-яку іншу можливу подію для вибраного елементу
$('.tt').on('click',function(){
$(this).css('border','3px solid red');
});
/* на місці #fornew може бути батьківський елемент
вищого рівня - document, 'body', ... */
$('#fornew').on('click','.newb', function(){
$(this).css('border','3px solid red');
});.off()
Метод відміняє обробника події, що встановлена за допомогою .on ()
Для приклада вище - відміняємо 'click' встановлений .on(). Завантажте новий блок, перевірте 'click', а потім відмініть 'click' для натупного нового завантаженого блоку
$('#btnoff').click(function(){
$('#fornew').off('click','.newb');
});.one()
Встановлює обробника аналогічно .on(), але подія встановлена на один раз
Кліком по кнопці можемо добавити тільки один новий блок.
$('#btnone').one('click',function(){
$('#fornew1').append('<div></div>');
});.trigger()
Програмно запускає код події для іншого елементу і це виглядає так, ніби на елемент вплинули безпосередньо - викликаються події браузера для цього елементу (якщо вони є), наприклад, відправка submit, або стилі для елемента.
Кліком по кнопці можемо запустити подію click для вкладеного блоку .tb
/* подія для блоку .tb*/
$('.tb').click (function(){
$(this).css('border','3px solid red');
});
/* програмний запуск click для .tb*/
$('#btnt').click(function(){
$('.tb').trigger('click');
});
$( "p" ).click(function( event, a, b ) {
// при звичайному клікі, a и b дорівнють undefined
// при ручному виклику, вони будуть відповідати "par1" та "par2"
})
.trigger( "click", [ "par1", "par2" ] );
.triggerHandler()
Програмно запускає код події (записаний всередені) для іншого елементу, але не викликає події браузера для цього елементу.
Різниця між .trigger() та .triggerHandler()
Існує input і код для нього
$( "#inp1" ).focus(function(){
$(this).fadeOut(500).fadeIn(500);
});
#inp1:focus {
border: 2px solid red;
}Клік по кнопці "button1 - .trigger()" буде виглядати візуально ніби і справді клікнули в input - виконається і код, і подія браузера - надання червоного бордеру. Клік по кнопці "button2 - .triggerHandler()" виконає лише код, записаний для input.
$( "#button1" ).click(function() {
$( "#inp_trig" ).trigger( "focus" );
});
$( "#button2" ).click(function() {
$( "#inp1" ).triggerHandler( "focus" );
});далі ✏