窗口调整大小undefined不是一个函数

时间:2014-09-18 20:26:33

标签: javascript jquery

我试图弄清楚为什么我在控制台时会出现错误。在这个jQuery插件中,窗口上的消息调整大小。我可以不在插件原型中引用窗口吗?

;(function ( $, window, document, undefined ) {

  "use strict";

  var pluginName = "rigallery",
    defaults = {
      transition: "ease"
    };

  function Plugin ( element, options ) {
    this.element = element;
    this.settings = $.extend( {}, defaults, options );
    this._defaults = defaults;
    this._name = pluginName;
    this.init();
  }

  Plugin.prototype = {
    init: function() {
      this.getHeight();
    },
    getHeight: function() {
      $(window).resize(function() {
        console.log('Yay!');
      });
    }
  };

  $.fn[ pluginName ] = function( options ) {
    this.each(function() {
      if ( !$.data( this, "plugin_" + pluginName ) ) {
        $.data( this, "plugin_" + pluginName, new Plugin( this, options ) );
      }
    });
    return this;
  };

})( jQuery, window, document );

1 个答案:

答案 0 :(得分:0)

好的,我明白了。我将window.resize调用移动到init方法,然后添加了一个var = this,然后使用that.getHeight()调用getHeight。我很想知道这是否是正确的方法。

;(function ( $, window, document, undefined ) {

  "use strict";

  var pluginName = "rigallery",
    defaults = {
      transition: "ease"
    };

  function Plugin ( element, options ) {
    this.element = element;
    this.settings = $.extend( {}, defaults, options );
    this._defaults = defaults;
    this._name = pluginName;
    this.init();
  }

  Plugin.prototype = {
    init: function() {
      var that = this;
      this.createGallery();
      this.slidesTransition();
      $(window).resize(function() {
        console.log(that.getHeight());
      });
    },
    getHeight: function() {
      var height = $(this.element).find("li:first img").height();
      return height;
    }
  };

  $.fn[ pluginName ] = function( options ) {
    this.each(function() {
      if ( !$.data( this, "plugin_" + pluginName ) ) {
        $.data( this, "plugin_" + pluginName, new Plugin( this, options ) );
      }
    });
    return this;
  };

})( jQuery, window, document );