Javascript 防止在单击overlay div时触发后台事件
我有一个Javascript 防止在单击overlay div时触发后台事件,javascript,backbone.js,Javascript,Backbone.js,我有一个Backbone视图,并在其中附加了一些事件: var View1 = Backbone.View.extend({ initialize: function() { // ... }, events: { "touchend .elem": "callback", // ... } render: function() { // ... } }); 现在,当我渲染View1时,会首先渲染另一个视图
Backbone
视图,并在其中附加了一些事件:
var View1 = Backbone.View.extend({
initialize: function() {
// ...
},
events: {
"touchend .elem": "callback",
// ...
}
render: function() {
// ...
}
});
现在,当我渲染View1
时,会首先渲染另一个视图(View2
),它有一个覆盖View1
元素的div
。
div
具有以下CSS
属性:
.overlay {
background-color: rgba(0, 0, 0, 0.22) !important;
z-index: 500;
width: 100%;
height: 100%;
top: 0;
left: 0;
position: fixed;
}
View2
在几秒钟后消失。
问题是,如果我在覆盖消失之前单击它,覆盖下的事件将被触发,因此,在我的示例中,回调
函数将被调用
我尝试通过以下操作将假事件附加到View2
:
var View2 = Backbone.View.extend({
initialize: function() {
// ...
},
events: {
// ...
"touchend .overlay": "overlayCallback"
},
overlayCallback: function( event ) {
if ( event ) {
event.preventDefault();
event.stopImmediatePropagation();
event.stopPropagation();
}
return false;
},
render: function() {
// ...
}
});
但这并不能解决我的问题
当用户单击View2
overlaydiv
时,如何防止View1
触发事件
谢谢假设View1调用View2,您可以这样做:
undelegateEvents
-方法
backbonejs-在view2的初始化方法中禁用
view1的事件将暂时停止李>
delegateEvents
-方法创建事件,或创建
自定义方法,并从view2对view1的引用调用它我们不知道您的DOM的结构。你应该提供一个@TJ,我认为这是没有必要的,因为我只需要一种方法来禁用覆盖div下所有div的触摸事件。谢谢,这完全取决于你所说的under。它可能是眼睛下面,只是视觉上。我们需要知道DOM中这些元素的关系,以及整个CSS。简言之,弗兰克,你算出来了吗?