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
overlay
div
时,如何防止
View1
触发事件


谢谢

假设View1调用View2,您可以这样做:

  • 将View1作为参数添加到View2s初始化方法中
  • 然后,使用中所述的
    undelegateEvents
    -方法 backbonejs-在view2的初始化方法中禁用 view1的事件将暂时停止
  • 关闭视图2时,重新委派 您可以使用View1中的
    delegateEvents
    -方法创建事件,或创建 自定义方法,并从view2对view1的引用调用它

  • 我们不知道您的DOM的结构。你应该提供一个@TJ,我认为这是没有必要的,因为我只需要一种方法来禁用覆盖div下所有div的触摸事件。谢谢,这完全取决于你所说的under。它可能是眼睛下面,只是视觉上。我们需要知道DOM中这些元素的关系,以及整个CSS。简言之,弗兰克,你算出来了吗?