2011-09-12 49 views
6

我有一些html。带有斜体标记的HTML定位标记

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

而且一些JavaScript。

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

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

答案是。

Tag: [object HTMLElement] 
Tag Name: I 

为什么?它不应该是锚?

修订

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

    // other stuff 
}); 

这会做的把戏?

+0

为什么不尝试使用'? – jrummell

+3

请记住'''','b'和'u'对你的语义没有多大意义。 [有更好的方法](http://www.impressivewebs.com/bold-italic-html5/)... –

回答

4

为什么?

因为您触摸了<i>(然后事件冒泡为<a>)。

它不应该是锚吗?

如果您想要绑定事件的元素而不是实际触发事件的元素,请使用currentTarget

+0

它会发生像我触摸“我”和事件被解雇两次? – Neutralizer

+0

嘿,我刚刚意识到了这个问题。问题是因为“我”是“a”,而且大部分按钮空间都是由“i”的背景图像组成的,所以当我尝试触摸按钮时,如果我的手指刚好在图像上而不是文本,处理程序不会被解雇。我该如何纠正这一点? – Neutralizer