我有一个 Marionette ItemView 正在监听点击li
;下面 UI 中 ItemViews 的所有单击事件都被父级上的单击处理程序忽略li
。
我找到了一种涉及调用的解决方法,e.stopPropagation
但似乎实际的解决方案可能是针对锚标记而不是 li。
一些示例代码:
var LiView = Marionette.ItemView.extend({
events : {
'click' : function(e){
console.log(e.target);
}
}
});
var AnchorView = Marionette.ItemView.extend({
events : {
'click' : function(e){
e.preventDefault();
console.log(e.target);
}
}
});
new LiView({el: 'li'});
new AnchorView({el: 'li a'});
如果没有stopPropagation
li click 事件仍然会触发 - 就像当您有多个 jQuery click 处理程序时一样。问题是 e.target 将引用两个点击处理程序中的锚点——这是不受欢迎的。
关于更好地构建它的任何想法?