Tutti, so che nel modello di eventi di livello 2 di Dom, esiste una bolla di eventi e di eventi. ma non riesco proprio a capire come jquery trattare con loro. Così ho fatto qualche esperimento con il metodo .bind
. questo è il mio codice. Per favore rivederlo.Eventi Jquery .bind attivati durante l'acquisizione di eventi o il fumetto di eventi
<script>
$(function() {
$('*').each(function(){
var current = this;
$(this).bind("dblclick",function(event){console.log('Capture for ' + current.tagName + '#'+ current.id +
' target is ' + event.target.id);});
});
});
</script>
<body id="greatgrandpa">
<div id="grandpa">
<div id="pops">
<img id="example" src="designer/templates/thumbnails/2ColsTemplate.PNG" />
</div>
</div>
</body>
l'uscita si presenta come di seguito
Capture for IMG#example target is example
Capture for DIV#pops target is example
Capture for DIV#grandpa target is example
Capture for BODY#greatgrandpa target is example
Capture for HTML# target is example
Quando uso il event.stopPropagation();
il gestore di eventi si fermerà bolla l'evento dblclick
.
Ma ho 2 domande per questo. In base all'ordine di scrittura dei registri, ho indovinato che il metodo bind
ha attivato l'evento nel fumetto degli eventi (dal basso verso l'alto di dom) non nella condizione di evento (dalla parte superiore della finestra in basso). Un'altra domanda è c'è qualche possibilità di far scattare l'evento nel periodo di cattura dell'evento? Grazie.
grazie.
Sì, come possiamo vedere nei registri. è bubbing. dal basso verso l'alto. grazie. –
ok. Capito . jquery supporta solo l'evento che bolle. Grazie alla tua buona risposta. –
[IE9 e versioni successive supportano l'acquisizione degli eventi] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener#Browser_Compatibility). – Barney