防止后台事件的点击叠加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