Método off
O método off permite desvincular um manipulador
de eventos de um elemento. Para vincular um manipulador,
pode-se usar o método
off.
Sintaxe
Desta forma, removemos um manipulador de eventos de um elemento.
Como primeiro parâmetro, é passada uma string com um ou vários
eventos separados por espaços. Como segundo, passamos um seletor
filtro opcional para elementos descendentes dentro do elemento
(deve corresponder ao que foi passado no método on quando
anexamos o manipulador). Para remover todos os eventos delegados,
passe o valor '**'. O segundo parâmetro é opcional.
Como terceiro, passamos a função manipuladora (que anexamos),
à qual é passado o objeto de evento, ou passamos false:
$(seletor).off(eventos, [seletor], função-manipuladora(objeto evento));
Podemos usar o método off de outra forma.
Neste caso, o primeiro parâmetro é um objeto JavaScript
onde as chaves são o tipo de evento e os valores são as
funções manipuladoras que adicionamos ao elemento:
$(seletor).off({'tipo de evento': handler}, [seletor]);
Podemos simplesmente passar um parâmetro na forma de
um objeto jQuery.Event:
$(seletor).off(evento);
Se nenhum parâmetro for passado para o método, desvincularemos todos os manipuladores anexados do elemento:
$(seletor).off();
Exemplo
Vamos adicionar a função manipuladora testFunc
aos parágrafos. Mas imediatamente removemos o manipulador
do segundo parágrafo, assim, o clique no segundo parágrafo
não terá nenhum efeito (se comentarmos a última linha de
código, veremos como o evento é acionado também ao clicar
no segundo parágrafo):
<p id="test1">click1</p>
<p id="test2">click2</p>
function testFunc(event) {
alert(event.data.text);
}
$('#test1').on('click', {text: 'aaa'}, testFunc); // adiciona o manipulador
$('#test2').on('click', {text: 'bbb'}, testFunc); // adiciona o manipulador
$('#test2').off('click', testFunc); // remove o manipulador