#214329 by starbow: avoid attaching scroll behavior multiple times
parent
ef1235cc0a
commit
ef043ca5bb
|
@ -1,8 +1,14 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
|
Drupal.tableHeaderDoScroll = function() {
|
||||||
|
if (typeof(Drupal.tableHeaderOnScroll)=='function') {
|
||||||
|
Drupal.tableHeaderOnScroll();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
Drupal.behaviors.tableHeader = function (context) {
|
Drupal.behaviors.tableHeader = function (context) {
|
||||||
// This breaks in anything less than IE 7. Prevent it from running.
|
// This breaks in anything less than IE 7. Prevent it from running.
|
||||||
if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7) {
|
if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +22,7 @@ Drupal.behaviors.tableHeader = function (context) {
|
||||||
top: '0px'
|
top: '0px'
|
||||||
});
|
});
|
||||||
|
|
||||||
var headerClone = $(headerClone)[0];
|
headerClone = $(headerClone)[0];
|
||||||
headers.push(headerClone);
|
headers.push(headerClone);
|
||||||
|
|
||||||
// Store parent table.
|
// Store parent table.
|
||||||
|
@ -44,7 +50,7 @@ Drupal.behaviors.tableHeader = function (context) {
|
||||||
var cellWidth = parentCell.eq(index).css('width');
|
var cellWidth = parentCell.eq(index).css('width');
|
||||||
// Exception for IE7.
|
// Exception for IE7.
|
||||||
if (cellWidth == 'auto') {
|
if (cellWidth == 'auto') {
|
||||||
var cellWidth = parentCell.get(index).clientWidth +'px';
|
cellWidth = parentCell.get(index).clientWidth +'px';
|
||||||
}
|
}
|
||||||
$(this).css('width', cellWidth);
|
$(this).css('width', cellWidth);
|
||||||
});
|
});
|
||||||
|
@ -56,16 +62,22 @@ Drupal.behaviors.tableHeader = function (context) {
|
||||||
var vOffset = (document.documentElement.scrollTop || document.body.scrollTop) - e.vPosition;
|
var vOffset = (document.documentElement.scrollTop || document.body.scrollTop) - e.vPosition;
|
||||||
var visState = (vOffset > 0 && vOffset < e.vLength) ? 'visible' : 'hidden';
|
var visState = (vOffset > 0 && vOffset < e.vLength) ? 'visible' : 'hidden';
|
||||||
$(e).css({left: -hScroll + e.hPosition +'px', visibility: visState});
|
$(e).css({left: -hScroll + e.hPosition +'px', visibility: visState});
|
||||||
};
|
}
|
||||||
|
|
||||||
|
// Only attach to scrollbars once, even if Drupal.attachBehaviors is called
|
||||||
|
// multiple times.
|
||||||
|
if (!$('body').hasClass('tableHeader-processed')) {
|
||||||
|
$('body').addClass('tableHeader-processed');
|
||||||
|
$(window).scroll(Drupal.tableHeaderDoScroll);
|
||||||
|
$(document.documentElement).scroll(Drupal.tableHeaderDoScroll);
|
||||||
|
}
|
||||||
|
|
||||||
// Track scrolling.
|
// Track scrolling.
|
||||||
var scroll = function() {
|
Drupal.tableHeaderOnScroll = function() {
|
||||||
$(headers).each(function () {
|
$(headers).each(function () {
|
||||||
tracker(this);
|
tracker(this);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
$(window).scroll(scroll);
|
|
||||||
$(document.documentElement).scroll(scroll);
|
|
||||||
|
|
||||||
// Track resizing.
|
// Track resizing.
|
||||||
var time = null;
|
var time = null;
|
||||||
|
|
Loading…
Reference in New Issue