Método one
O método one permite adicionar um manipulador
de eventos a um elemento. Depois que o evento
for executado uma vez - o manipulador será
removido automaticamente.
Sintaxe
Desta forma, anexamos um manipulador de eventos a um elemento,
o primeiro parâmetro é passado como uma string
contendo um ou mais eventos separados por
espaços, o segundo - passamos dados na forma de um objeto JavaScript,
que são passados para o manipulador na propriedade
event.data quando o evento é acionado. O segundo parâmetro
é opcional. O terceiro, passamos a função de manipulação,
para a qual o objeto de evento é passado, ou passamos false:
$(seletor).one(eventos, [dados], função-manipuladora(objeto de evento));
É possível passar como segundo parâmetro um seletor
filtrador adicional de elementos descendentes dentro do elemento,
como terceiro - dados adicionais, que são passados
para o manipulador na propriedade event.data quando
o evento é acionado. O segundo e o terceiro parâmetros
são opcionais. O quarto, passamos a
função de manipulação, para a qual o objeto de evento é passado
e parâmetros adicionais opcionais. Se ao invés
da função de manipulação for passado false, a função simplesmente
retornará false:
$(seletor).one(eventos, [seletor], [dados], função-manipuladora(objeto de evento));
É possível usar o método one de outra forma,
então no primeiro parâmetro é passado
um objeto JavaScript, onde as chaves são o tipo de evento, e
os valores são a função de manipulação, que adicionamos ao
elemento:
$(seletor).one({'tipo de evento': handler}, [seletor], [dados]);
Se não passarmos um seletor adicional, o evento é acionado no elemento ao qual anexamos o manipulador, caso contrário - no elemento descendente que corresponde a esse seletor (eventos delegados).
Exemplo
Vamos clicar no parágrafo e exibir os dados que
passamos para o método one. Nos cliques subsequentes
nada acontecerá. Vamos usar a
função de manipulação testFunc,
que criamos:
<p>clique</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);