我正在从头开始一个 Web 应用程序,并且我正在使用 Backbone。所以一开始我试图让我的整个应用程序与一个视图相关联,将一些锚(带有内部链接)绑定到一个点击事件,该事件获取 href 并导航到该事件,如下所示:
var App = new ( Backbone.View.extend( {
...
events : {
'click a[data-internal]' : function( event ) {
event.preventDefault();
Backbone.history.navigate( event.target.pathname, { trigger : true } );
}
},
start : function() {
Backbone.history.start( { pushState : true } );
}
}))({ el : document.body });
$( function() { App.start(); });
然后我有以下html:
<li>
<a href="/messages" data-internal="true"><img src="assets/img/mail.png" alt="Mensagens" title="Mensagens"></a>
</li>
我的问题是,当事件被触发时, event.target 总是与 img 孩子相关联,而不是与锚点相关联。这似乎与冒泡无关。我已经尝试过使用 e.stopPropagation()。没有内部img,它运行良好。
我不明白为什么会这样。有人可以向我解释吗?
非常感谢 ;)
编辑:我按照 ho.s 的建议使用 event.currentTarget 解决了这个问题。