Existem problemas de bolhas de eventos e captura de eventos nos eventos JavaScript e JQuery. A seguir, é apresentado um resumo detalhado dos dois problemas e suas soluções.
As bolhas de eventos são um processo de bolhas de crianças a nós ancestrais;
A captura de eventos é exatamente o oposto e é um processo de nós de ancestrais a nós para crianças.
Dê um exemplo de um evento de clique em jQuery:
O código é o seguinte:
A cópia do código é a seguinte:
<! Doctype html>
<meta charset = "utf-8">
<title> Teste </ititure>
<head>
<script src = "http://code.jquery.com/jquery-latest.js"> </script>
<script type = "text/javascript">
$ (function () {
$ ('#clickme'). Clique (function () {
alerta ('olá');
});
$ ('corpo'). Clique (function () {
alerta ('bebê');
});
});
</script>
</head>
<Body>
<div>
<button type = "button" id = "button2"> clique em mim </botão>
<botão id = "ClickMe"> Clique em </botão>
</div>
</body>
</html>
Fenômeno de bolha de eventos: clique no botão de "id = clickme" e duas caixas pop-up, "Hello" e "Baby", aparecerão uma após a outra.
Análise: Ao clicar no botão "ID = ClickMe", o evento de clique com o botão e o botão elementos e o corpo dos pais são acionados, para que duas caixas apareçam uma após a outra e o chamado fenômeno de bolha ocorra.
Fenômeno de captura de eventos: se você clicar no DIV e no botão que não ligue o evento de clique, a caixa de diálogo "Baby" será exibida.
Em projetos reais, queremos evitar bolhas de eventos e captura de eventos.
Como impedir que os eventos borbulhassem:
Método 1: Retorne False no evento de clique atual;
A cópia do código é a seguinte:
$ ('#clickme'). Clique (function () {
alerta ('olá');
retornar falso;
});
Método 2:
A cópia do código é a seguinte:
$ ('#clickme'). Clique (função (evento) {
alerta ('olá');
var e = window.event || evento;
if (e.stopPropagation) {// Se um objeto de evento for fornecido, este é um navegador que não
E.StopPropagation ();
}outro{
// isto é com compatível com a cancelamento da bolha de eventos
window.Event.cancelbubble = true;
}
});
Parece que o evento de captura não pode ser bloqueado