javascript - Backbone View 的窗口调整事件

标签 javascript jquery backbone.js backbone-events

我在 javascript 中使用 Backbone View 。

我创建了一个 Backbone View ,如下所示:

var MaskView = Backbone.View.extend({
      className: "dropdown-mask",
      initialize: function(){

      },
      onClick: function(e){

      },
      hide: function(){

      },
      makeCSS: function(){
        return {
          width  : Math.max(document.documentElement.scrollWidth,  $(window).width()),
          height : Math.max(document.documentElement.scrollHeight, $(window).height())
        }
      }
    });

我想捕获 View 内窗口大小调整的事件。

问题是,当窗口完全加载时,掩码 View 是从上面的主干 View 创建的。现在,当我调整窗口大小时,蒙版仅覆盖部分窗口区域。 我希望每次重新加载窗口时, mask 也会根据当前窗口大小动态更改其区域。

我该如何实现?

最佳答案

Backbone 依靠 jQuery(或 zepto)进行 DOM 操作。 jQuery's .resize()是你正在寻找的事件,所以你应该这样写:

var MaskView = Backbone.View.extend({
    initialize: function() {
        $(window).on("resize", this.updateCSS);
    },

    updateCSS: function() {
        this.$el.css(this.makeCSS());
    },

    remove: function() {
        $(window).off("resize", this.updateCSS);
        Backbone.View.prototype.remove.apply(this, arguments);
    }
});

也就是说,我敢打赌您根本不需要为此使用 JavaScript。为什么普通的旧 CSS 样式不能解决问题?像这样:

.dropdown-mask {
    width: 100%;
    height: 100%;
    position: fixed;
}

关于javascript - Backbone View 的窗口调整事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17879505/

相关文章:

javascript - chrome 调试器对象数据不一致

javascript - 为什么给 undefined 赋值在现代浏览器中不会产生错误?

javascript - 前置所有 CSS 选择器

backbone.js - Underscore的bindAll : Cannot read property 'bind' of undefined

javascript - 是什么让 Angular 和 Backbone 与 jQuery 不同?

javascript - Jquery 可拖动不工作 2

javascript - 如何根据高度 float 元素

javascript - 如何使用 jQuery 中的动画功能从左向右滑动?

jQuery 粘性导航动画返回不够快

javascript - Backbone.js 比较器未排序(Coffeescript)