Метод one - добавление функции обработчика событий к элементу
Метод one
позволяет добавить обработчик
событий к элементу. После того, как событие
отработает один раз - обработчик будет
автоматически удален.
Синтаксис
Так мы прикрепляем обработчик событий к элементу,
в качестве первого параметра в виде строки
передается одно или несколько событий разделенных
пробелами, вторым - передаем данные в виде объекта JavaScript,
которые передаются в обработчик в свойстве
event.data
при срабатывании события. Второй параметр
необязательный. Третьим передаем функцию-обработчик,
в которую передается объект события или передаем false
:
$(селектор).one(события, [данные], функция-обработчик(объект события));
Можно вторым параметром передать допольнительный
фильтрующий селектор потомков внутри элемента,
третьим - дополнительные данные, которые передаются
в обработчик в свойстве event.data
при
срабатывании события. Второй и третий парметры
необязательны. Четвертым передаем
функцию-обработчик, в которую передается объект события
и необязательные дополнительные параметры. Если вместо
функции-обработчика передать false
, то функция просто
вернет false
:
$(селектор).one(события, [селектор], [данные], функция-обработчик(объект события));
Можно воспользоваться методом one
по-другому,
тогда в первый параметр передается
объект JavaScript, где ключи - тип события, а
значения - функция-обработчик, которую мы добавляли к
элементу:
$(селектор).one({'тип события': handler}, [селектор], [данные]);
Если мы не передаем дополнительный селектор, то событие срабатывает на элементе, к которому мы прикрепляем обработчик, в противном случае - на элементе-потомке, который который соответствует этому селектору (делегированные события).
Пример
Давайте при клике на абзац выведем данные, которые
мы передали в метод one
. При последующих кликах
ничего происходить не будет. Воспользуемся
функцией-обработчиком testFunc
,
которую мы создали:
<p>click</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);