docs: function(options) {
          this.$main.html([
              '<div class="biz-table-head-wrap"><table class="biz-table-head"></table></div>',
              '<div class="biz-table-placeholder"></div>',
              '<div class="biz-table-body-wrap"><table class="biz-table-body"></table></div>'
          ].join(''));
  
          this.$headWrap = this.$main.find('.biz-table-head-wrap');
          this.$bodyWrap = this.$main.find('.biz-table-body-wrap');
          this.$placeholder = this.$main.find('.biz-table-placeholder');
          this.$tableHead = this.$main.find('.biz-table-head');
          this.$tableBody = this.$main.find('.biz-table-body');
  
          // 创建 thead
          this.$tableHead.html(this.createTableHead(options))
              .addClass([defaultClass, options.customClass].join(' '));
  
          // 创建 tbody
          this.$tableBody.html(this.createTableBody(options))
              .addClass([defaultClass, options.customClass, (this.rowSpan > 1 && options.data.length > 0) ? 'biz-rowspan' : ''].join(' '));
  
          if (options.flexible) {
              this.$tableHead.addClass('biz-table-flexible');
              this.$tableBody.addClass('biz-table-flexible');
          }
  
          // 创建总计行
          if (options.foot && options.data.length > 0) {
              var tbody = this.$tableBody.find('tbody'),
                  foot = this.createFoot(options);
              if (options.foot === 'top') {
                  tbody.prepend(foot);
              }
              if (options.foot === 'bottom') {
                  tbody.append(foot);
              }
          }
  
          // 无数据提示行
          if (options.data.length === 0) {
              this.createNoDataContent();
          }
  
          // 勾选列
          if (options.selectable) {
              if (options.data.length > 0) {
                  this.createSelect(options.data);
              }
              this.bindSelect();
          }
  
          // 排序
          if (options.onSort) {
              this.bindSort();
          }
  
          // 自动横向滚动
          var self = this;
          this.$headWrap.on('scroll', function() {
              self.$bodyWrap[0].scrollLeft = this.scrollLeft;
          });
          this.$bodyWrap.on('scroll', function() {
              self.$headWrap[0].scrollLeft = this.scrollLeft;
          });
  
          // 同步宽度
          this.syncWidth();
          $(window).on('resize.bizTable', function() {
              self.syncWidth();
          });
  
          // 表头锁定
          if (options.lockHead) {
              $(window).on('scroll.bizTable', function() {
                  var currentOffsetTop = self.$main.offset().top - options.topOffset,
                      headHeight = self.$headWrap.height();
                  if ($(window).scrollTop() > currentOffsetTop) {
                      if (!self.hasLocked) {
                          self.$headWrap.css({
                              position: 'fixed',
                              top: self.options.topOffset,
                              width: self.$main.width()
                          });
                          self.$placeholder.css({
                              height: headHeight
                          });
                          self.hasLocked = true;
                      }
                  } else {
                      if (self.hasLocked) {
                          self.$headWrap.css({
                              position: 'static',
                              top: 'auto',
                              width: 'auto'
                          });
                          self.$placeholder.css({
                              height: 0
                          });
                          self.hasLocked = false;
                      }
                  }
              });
          }
  
          // 编辑单元格
          this.$tableBody.editableTableWidget();
          if (options.onValidate) {
              this.bindValidate();
          }
          if (options.onEdit) {
              this.bindEdit();
          }
          if (options.onFailEdit) {
              this.bindFailEdit();
          }
      }