(函数($){/***附加粘性表格标题。*/Drupal.behaviors.tableHeader={附加:函数(上下文,设置){if(!$.support.positionFixed){回报;}$('table.sticlyenabled',context).once('tablesheader',function(){$(this).data(“drupal-tableheader”,新的drupal.tableheader(thi));});}};/***tableHeader对象的构造函数。提供粘性表格标题。**@param表格*要向其添加粘性标头的表的DOM对象。*/Drupal.tableHeader=函数(表){var self=此;this.originalTable=$(表格);this.originalHeader=$(表).children('head');this.originalHeaderCells=this.originalHeader.find('>tr>th');//克隆表头,使其继承原始jQuery属性。隐藏//表,以避免在页面加载时头克隆的闪烁。this.stickyTable=$('').insertBefore(this.originalTable).css({位置:“固定”,顶部:“0px”});this.stickyHeader=this.originalHeader.clone(true)隐藏().appendTo(this.stickyTable);this.stickyHeaderCells=this.stickeyHeader.find('>tr>th');this.originalTable.addClass('sticky-table');$(窗口).bind('scroll.drupal-tableheader',$.proxy(this,'eventhandlerRecalculateStickyHeader')).bind('resize.drupal-tableheader',{calculateWidth:true},$.proxy(this,'eventhandlerRecalculateStickyHeader'))//确保滚动到视图中的锚点未隐藏在//粘性表格标题。如果需要,请调整scrollTop。.bind('drupalDisplaceAnchor.drupal-tableheader',函数(){window.crollBy(0,-self.stickyTable.outerHeight());})//确保聚焦的元素没有隐藏在粘性下面//表标题。如果需要,请调整scrollTop。.bind('drupalDisplaceFocus.drupal-tableheader',函数(事件){if(self.stickyVisible&&event.clientY<(self.stickyOffsetTop+self.tickyTable.outerHeight())&&event$target.closest('sticky-header').length===0){window.crollBy(0,-self.stickyTable.outerHeight());}}).triggerHandler('resize.drupal-tableheader');//我们隐藏了页眉,以避免它在页面加载时错误显示;//我们需要现在将其取消隐藏,以便它在预期的时间显示。this.stickyHeader.show();};/***事件处理程序:重新计算粘性表标题的位置。**@param事件*正在触发的事件。*/Drupal.tableHeader.prototype.eventhandlerRecalculateStickyHeader=函数(事件){var self=此;var calculateWidth=事件数据&&event.data.calculateWith;//将粘性表格标题的顶部位置重置为当前顶部偏移量。this.stickyOffsetTop=Drupal.settings.tableHeaderOffset?eval(Drupal.settings.tableHeaderOffset+'()'):0;this.stickyTable.css('top',this.stickeyOffsetTop+'px');//保存定位数据。var viewHeight=document.documentElement.scrollHeight||document.body.scroll高度;if(calculateWidth||this.viewHeight!==viewHeight){this.viewHeight=视图高度;this.vPosition=this.originalTable.offset().top-4-this.stickyOffsetTop;this.hPosition=this.originalTable.offset().left;this.vLength=this.originalTable[0].clientHeight-100;calculateWidth=true;}//相对于视口跟踪水平位置并设置可见性。var hScroll=document.documentElement.scrollLeft | | document.body.scroll左;var vOffset=(document.documentElement.scrollTop||document.body.crollTop)-this.vPosition;this.stickyVisible=vOffset>0&&vOffset<this.vLength;this.stickyTable.css({left:(-hScroll+this.hPosition)+“px”,可见性:this.stick可见?“可见”:“隐藏”});//仅当粘性标头实际为//可见或强制时。if(this.stickyVisible&&(calculateWidth||!this.widthCalculated)){this.widthCalculated=真;//调整标题及其单元格宽度。this.stickyHeaderCells.each(函数(索引){var cellWidth=self.originalHeaderCells.eq(index).css('width');//IE7例外。if(cellWidth=='auto'){cellWidth=self.originalHeaderCells.get(index).clientWidth+'px';}$(this).css('width',cellWidth);});this.stickyTable.css('width',this.originalTable.csss('wight'));}};})(jQuery);