2011-09-12 38 views
6

Tengo algo de HTML.Etiqueta de ancla HTML con etiqueta en cursiva

<a href="#"> 
    <i class="some-bg" /> 
    Some Text 
</a> 

Y algunos Javascript.

$("a").bind("touchstart", function (e) { 
    e.preventDefault(); 

    console.log("Tag: " + e.target); 
    console.log("Tag Name: " + e.target.tagName); 
}); 

La respuesta es.

Tag: [object HTMLElement] 
Tag Name: I 

¿Por qué? ¿No debería ser ancla?

ACTUALIZADO

$("a, a *").bind(function() { 
    e.stopPropagation(); 

    // other stuff 
}); 

Será este el truco?

+0

¿Por qué no probar ''? – jrummell

+3

Recuerda que 'i',' b' y 'u' no significan mucho sobre tu semántica. [Hay mejores formas] (http://www.impressivewebs.com/bold-italic-html5/) ... –

Respuesta

4

¿Por qué?

Debido a que tocó el <i> (y entonces el evento burbujea hasta la <a>).

¿No debería ser un ancla?

No. Utilice currentTarget si desea el elemento al que está vinculado el evento en lugar del que desencadenó el evento.

+0

¿Pasaría algo así como que toco "i" y el evento se dispara dos veces? – Neutralizer

+0

hey Me acabo de dar cuenta del problema. El problema es porque "i" indica la "a" y también la mayor parte del espacio del botón está en la imagen de fondo de "i", así que cuando intento tocar el botón y si el dedo está sobre la imagen y no el texto , el controlador no es despedido. ¿Cómo puedo rectificar esto? – Neutralizer

Cuestiones relacionadas