Ho un pezzo di HTML:Span all'interno Ancora con bubbling degli eventi
<li class="addToFriends"><a href="....">Something something<span>INSIDE SPAN</span>something</a></li>
Per gestire la richiesta AJAX quando si clicca su di ancoraggio gestore su eventi click Mi sono registrato:
$('.addToFriends a').click(function(event){
var target = $(event.target);
if (target.is('a')) {
// if I click on SPAN element following fragment won't execute!
// do ajax request
}
event.preventDefault();
});
Le mie domande sono :
- perché l'evento click viene generato per l'elemento span? Dopotutto, non ho associato l'evento click agli elementi SPAN
- a parte la domanda precedente, ho pensato che se non avessi gestito l'evento click SPAN, il browser userà l'evento-bubbling per aumentare l'evento click per l'ancora (se ho vinto chiamare event.stopPropagation()). Ma ho anche non ha funzionato per me come l'evento click viene generato solo una volta
Così ora, ho ottenuto rotonda che problema che ho la mia soluzione è:
$('.addToFriends a').click(function(event){
var target = $(event.target);
if (!target.is('a')) {
target = target.parent('a')
}
...
});
Ma ancora, io sono curioso di sapere perchè funziona così ...
Grazie,
Paweł
Grazie mille per l'aiuto. Dopo aver studiato gli articoli citati, tutto è cristallino. E invece di fare riferimento a ** e.target ** (che può cambiare) mi riferisco a ** this ** (che è sempre ancora). – dragonfly
Grazie, esaminerò più approfonditamente le specifiche e l'articolo. Ad ogni modo, potresti rispondere a questa domanda:> perché l'evento click viene generato per l'elemento spaziatura > elemento? Dopotutto, non legavo lo > evento click sugli elementi SPAN perché, principalmente, questo è un problema per me. – dragonfly