防止后台事件的点击叠加DIV
时触发我有一个Backbone观点,我已经附加了一些事件,以它:防止后台事件的点击叠加DIV
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几秒钟后消失。 问题是,如果我在覆盖图消失之前单击它,覆盖图下的事件就会被触发,所以在我的示例中,将会调用callback函数。
我试图这样做是为了一个假事件附加到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() {
// ...
}
});
,但它并没有解决我的问题。
如何防止View1触发事件当用户点击View2覆盖div?
感谢
回答:
假设视图1调用视图2,你可以做到这一点,如:
- 添加您的视图1作为参数传递给View2s初始化法
- 然后,用
undelegateEvents- 一种方法,在规定 backbonejs- docs在view2的初始化方法中暂时禁用 view1的事件。 - 关闭View2,使用
delegateEvents重新授权 您的活动 - View1中的方法或在view1中创建 自定义方法,并将其从view2的引用调用到view1。
以上是 防止后台事件的点击叠加DIV 的全部内容, 来源链接: utcz.com/qa/257593.html

