
Quando nossa função de evento é acionada, a função de evento receberá na verdade um objeto de evento.
Quando executamos o método event.stopPropagation() em nossa função de evento, o borbulhamento do evento termina aqui.
Nem todos os tipos de eventos suportam o borbulhamento de eventos.
O borbulhamento de eventos acionará apenas funções de evento do mesmo tipo.
Existem duas maneiras de evitar eventos de bolha: uma é uma propriedade e a outra é um método.
define ou retorna se o evento deve ser propagado para o nível superior.
Sintaxe:
event.cancelBubble = true;
evita que o evento se propague ainda mais no fluxo de eventos.
Sintaxe:
event.stopPropagation();
Exemplo: Vincule funções de resposta de clique a três objetos que são mutuamente pai e filho.

janela.onload=função(){
var span = document.getElementById("sp");
span.onclick=função(){
alerta('tag de intervalo');
}
var box = document.getElementById('box3');
box3.onclick=função(){
alerta('caixa3');
}
var corpo = documento.corpo;
body.onclick=função(){
alerta('corpo');
}} Evitar bolhas na caixa: 
janela.onload=função(){
var span = document.getElementById("sp");
span.onclick=função(){
alerta('tag de intervalo');
}
var box = document.getElementById('box3');
box3.onclick = função(evento){
alerta('caixa3');
event.stopPropagation();
}
var corpo = documento.corpo;
body.onclick=função(){
alerta('corpo');
}} Quando temos várias subtags com os mesmos eventos, podemos adicionar eventos a elas percorrendo as subtags, mas se um novo elemento de subtag for adicionado, devemos religar a nova subtag elemento, caso contrário, é inválido.
vincula o evento ao elemento ancestral , de modo que quando o evento no elemento filho for acionado, ele irá borbulhar para o elemento ancestral e o evento será processado por meio do evento de resposta do elemento ancestral. Usando bolhas e delegação, você pode reduzir o número de ligações de eventos e melhorar o desempenho do programa.
Depois de vincularmos um evento ao elemento ancestral, não importa em qual elemento clicarmos dentro do elemento ancestral, o evento correspondente será acionado. elemento Neste momento, precisamos dar uma condição de julgamento, se é o elemento que queremos acionar o evento.
retorna o elemento que acionou o evento.
Sintaxe:
event.taget;

janela.onload=função(){
var ul = document.getElementById('ul1');
ul.onclick = função(evento){
if(event.target.className == 'abq'){
alert('Evento acionado!!')
}
}
//Adicionar hiperlink document.getElementById('bt1').onclick = function(){
var li = document.createElement('li');
li.innerHTML = "<a href = 'javascript:;' class='abq'>Nova tag</a>";
ul.appendChild(li);
}
} Através desse método, você pode vincular diversas funções de resposta de evento idênticas ao mesmo elemento.
.
para vincular o mesmo evento a um elemento ao mesmo tempo Defina múltiplas funções de resposta, de modo que quando o evento for acionado, as funções de resposta serão executadas na ordem em que as funções são vinculadas!

janela.onload=função(){
var bt = document.getElementById('bt1');
addEventListener('clique',função(){
alert('A função correspondente ao primeiro clique foi acionada!')
},falso);
addEventListener('clique',função(){
alert('A função correspondente ao segundo clique foi acionada!')
},falso);
addEventListener('clique',função(){
alert('A função correspondente ao terceiro clique foi acionada!')
}, false);} 
A função de resposta é executada durante a fase de borbulhamento. O terceiro parâmetro padrão é false
window.onload = function(){
var box1 = document.getElementById('box1');
var box2 = document.getElementById('box2');
var box3 = document.getElementById('box3');
box1.addEventListener('clique',função(){
alerta('caixa1');
},falso);
box2.addEventListener('clique',função(){
alerta('caixa2');
},falso);
box3.addEventListener('clique',função(){
alerta('caixa3');
},falso);
} 
Se quiser acionar o evento durante a fase de captura, você pode definir o terceiro parâmetro de addEventListener() como true! 
janela.onload=função(){
var box1 = document.getElementById('box1');
var box2 = document.getElementById('box2');
var box3 = document.getElementById('box3');
box1.addEventListener('clique',função(){
alerta('caixa1');
},verdadeiro);
box2.addEventListener('clique',função(){
alerta('caixa2');
},verdadeiro);
box3.addEventListener('clique',função(){
alerta('caixa3');
},verdadeiro);
}