Como o método removeEventListener funciona?
Na lição anterior, você aprendeu como trabalhar com os eventos
"click" e "input" usando o método addEventListener(). Nesta lição, você aprenderá como remover event listeners usando o método removeEventListener().
O método removeEventListener() é usado para remover um event listener que foi previamente adicionado a um elemento usando o método addEventListener(). Isso é útil quando você quer parar de escutar um evento específico em um elemento.
Aqui está a sintaxe básica para o método removeEventListener():
element.removeEventListener("event", listener);
Assim como o método addEventListener(), o método removeEventListener() recebe dois argumentos: o evento que você deseja remover e a função listener que foi adicionada anteriormente.
Também há um terceiro argumento opcional adicional que pode ser passado para o método removeEventListener(). Este argumento pode ser options ou useCapture.
O argumento options é um objeto que especifica as opções para o event listener, como se o event listener deve ser passive ou once.
O argumento useCapture é um valor booleano que especifica se o evento deve ser capturado durante a fase de propagação do evento.
Na maioria das vezes, você só precisará passar os argumentos event e listener para o método removeEventListener().
Vamos dar uma olhada em um exemplo para entender melhor como o método removeEventListener() funciona:
Aqui está um exemplo com algum HTML:
<link rel="stylesheet" href="styles.css" />
<h1>Event Listener examples</h1>
<button id="btn">Change background color</button>
button {
background: linear-gradient(135deg, #4da3ff, #007bff);
color: white;
border: none;
padding: 12px 20px;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all 0.25s ease;
box-shadow: 0 4px 10px rgba(0, 123, 255, 0.2);
}
Se quisermos alternar a cor de fundo entre cinza e azul, então podemos usar um event listener para isso.
Primeiro precisamos acessar o elemento button junto com o elemento body:
const bodyEl = document.querySelector("body");
const btn = document.getElementById("btn");
Então precisamos criar a função responsável por alternar entre as cores cinza e azul:
let isBgColorGrey = true;
function toggleBgColor() {
bodyEl.style.backgroundColor = isBgColorGrey ? "blue" : "grey";
isBgColorGrey = !isBgColorGrey;
}
Estamos usando uma variável booleana isBgColorGrey para acompanhar a cor de fundo atual. Se a cor de fundo for cinza, então a alteramos para azul e vice-versa.
Então precisamos adicionar um event listener ao elemento button para chamar a função toggleBgColor quando o botão for clicado:
btn.addEventListener("click", toggleBgColor);
Aqui está o exemplo completo até agora:
<link rel="stylesheet" href="styles.css" />
<h1>Event Listener examples</h1>
<button id="btn">Change background color</button>
<script src="index.js"></script>
button {
background: linear-gradient(135deg, #4da3ff, #007bff);
color: white;
border: none;
padding: 12px 20px;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all 0.25s ease;
box-shadow: 0 4px 10px rgba(0, 123, 255, 0.2);
}
button:hover {
background: linear-gradient(135deg, #66b3ff, #3399ff);
box-shadow: 0 6px 14px rgba(0, 123, 255, 0.3);
transform: translateY(-2px);
}
const bodyEl = document.querySelector("body");
const btn = document.getElementById("btn");
let isBgColorGrey = true;
function toggleBgColor() {
bodyEl.style.backgroundColor = isBgColorGrey ? "blue" : "grey";
isBgColorGrey = !isBgColorGrey;
}
btn.addEventListener("click", toggleBgColor);
Cada vez que o botão for clicado, a cor de fundo do body mudará entre cinza e azul.
Podemos atualizar o HTML para incluir um elemento de parágrafo que será usado para remover o event listener quando o cursor passar sobre ele:
<link rel="stylesheet" href="styles.css" />
<h1>Event Listener examples</h1>
<p id="para">MouseOver this text to remove the event listener</p>
<button id="btn">Change background color</button>
<script src="index.js"></script>
Para remover o event listener quando o parágrafo é hoverado, podemos adicionar um event listener ao elemento do parágrafo. Estamos usando o evento mouseover e passando uma função que remove o event listener do elemento button:
const para = document.getElementById("para");
const btn = document.getElementById("btn");
para.addEventListener("mouseover", () => {
btn.removeEventListener("click", toggleBgColor);
});
Quando o parágrafo é sobreposto, o listener de evento para o evento de clique do botão é removido e a cor de fundo não mudará mais quando o botão for clicado.
Aqui está o exemplo completo com o método removeEventListener():
<link rel="stylesheet" href="styles.css" />
<h1>Event Listener examples</h1>
<p id="para">MouseOver this text to remove the event listener</p>
<button id="btn">Change background color</button>
<script src="index.js"></script>
button {
background: linear-gradient(135deg, #4da3ff, #007bff);
color: white;
border: none;
padding: 12px 20px;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all 0.25s ease;
box-shadow: 0 4px 10px rgba(0, 123, 255, 0.2);
}
button:hover {
background: linear-gradient(135deg, #66b3ff, #3399ff);
box-shadow: 0 6px 14px rgba(0, 123, 255, 0.3);
transform: translateY(-2px);
}
const bodyEl = document.querySelector("body");
const para = document.getElementById("para");
const btn = document.getElementById("btn");
let isBgColorGrey = true;
function toggleBgColor() {
bodyEl.style.backgroundColor = isBgColorGrey ? "blue" : "grey";
isBgColorGrey = !isBgColorGrey;
}
btn.addEventListener("click", toggleBgColor);
para.addEventListener("mouseover", () => {
btn.removeEventListener("click", toggleBgColor);
});
Exemplos do mundo real de quando usar o método removeEventListener() incluem remover event listeners quando um modal é fechado em uma aplicação web ou quando um usuário faz logout de uma aplicação.Este módulo não possui perguntas. Marque como concluído.