Javascript 主干点击锚事件
我正在从头开始一个Web应用程序,我正在使用主干网。因此,首先,我尝试将我的整个应用程序与一个视图关联,将一些带有内部链接的锚绑定到一个点击事件,该事件获取href并导航到该事件,如下所示:Javascript 主干点击锚事件,javascript,jquery,html,backbone.js,Javascript,Jquery,Html,Backbone.js,我正在从头开始一个Web应用程序,我正在使用主干网。因此,首先,我尝试将我的整个应用程序与一个视图关联,将一些带有内部链接的锚绑定到一个点击事件,该事件获取href并导航到该事件,如下所示: var App = new ( Backbone.View.extend( { ... events : { 'click a[data-internal]' : function( event ) { event.preventDefault(); Backbone
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解决了这个问题。我无法解释为什么会发生这种情况,但是如果您记录event console.logevent,您将看到锚点就是currentTarget,我们已经知道的图像是:-target元素。因此,您可以使用event.currentTargetHaks来寻址锚点!我不知道存在一个目标和当前目标。知道我理解这个问题。@ho.s:和之间的区别是由于事件冒泡:您正在单击,但在任何人关心它之前,事件冒泡到了。currentTarget通常是主干应用程序中所需的内容,因为它往往是一个视图。