Метод one
Методот one овозможува да се додаде обработувач
на настани до елемент. Откако настанот
ќе се активира еднаш - обработувачот ќе
биде автоматски отстранет.
Синтакса
Вака прикачуваме обработувач на настани до елемент,
како прв параметар во вид на низа
се пренесува еден или повеќе настани разделени
со празно место, второ - пренесуваме податоци во вид на JavaScript објект,
кои се пренесуваат до обработувачот во својството
event.data при активирање на настанот. Вториот параметар
не е задолжителен. Трето пренесуваме функција-обработувач,
во која се пренесува објект на настан или пренесуваме false:
$(селектор).one(настани, [податоци], функција-обработувач(објект на настан));
Може второ да се пренесе дополнителен
филтрирачки селектор на потомци внатре во елементот,
трето - дополнителни податоци, кои се пренесуваат
до обработувачот во својството event.data при
активирање на настанот. Вториот и третиот параметар
не се задолжителни. Четврто пренесуваме
функција-обработувач, во која се пренесува објект на настан
и незадолжителни дополнителни параметри. Ако наместо
функција-обработувач се пренесе false, тогаш функцијата едноставно
ќе врати false:
$(селектор).one(настани, [селектор], [податоци], функција-обработувач(објект на настан));
Може да се искористи методот one поинаку,
тогаш во првиот параметар се пренесува
JavaScript објект, каде клучеви - тип на настан, а
вредности - функција-обработувач, која ја додадовме на
елементот:
$(селектор).one({'тип на настан': handler}, [селектор], [податоци]);
Ако не пренесеме дополнителен селектор, тогаш настанот се активира на елементот, до кој прикачуваме обработувач, во спротивен случај - на елемент-потомок, кој кој одговара на тој селектор (делегирани настани).
Пример
Ајде при клик на параграф да ги прикажеме податоците, кои
ги пренесовме во методот one. При следните кликови
ништо нема да се случи. Ќе ја искористиме
функцијата-обработувач testFunc,
која ја создадовме:
<p>клик</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);