【JQuery】IE8対応 テーブルヘッダ固定スクリプト

$.fn.fixedTable = function(){
  var $table = $(this),
      $thead = $table.find('thead'),
      $tbody = $table.find('tbody');

  //元テーブル横幅保存用
  var thead_cell_widthes = [];

  var $clone_table = $table.clone();
  $clone_table.find('tbody').remove();

  $clone_table.hide();

  /**
   * 元テーブルの横幅を複製テーブルに設定
   */
  var resize = function(){

    $clone_table.css({width: $table.width()});

    //元テーブルの各セルの横幅を記録
    thead_cell_widthes = [];

    $thead.find('tr > th').each(function(i, item){
      thead_cell_widthes.push($(item).width());
    });

    $clone_table.find('thead > tr > th').each(function(i, th){
      $(th).css({ width: thead_cell_widthes[i] });
    });
  }

  resize();

  $(window).scroll(function(){
    if($(this).scrollTop() < ($thead).height()){
      $clone_table.css({display: 'none'})
    }else{
      $clone_table.show();
    }
  });

  //リサイズされた際に複製テーブル幅を再調整
  $(window).resize(function(){{
    resize();
  }});

  $('body').append($clone_table);
  
  $clone_table.css({
    position: 'fixed',
    'z-index':  1,
    top: 0,
    left: 0,
    'margin-top': 0,
    display: 'none'
  })
}

解説
theadのみ複製する方法もありましたが
%でセル幅が固定されている場合、複製したtheadのセル幅が微妙にズレる現象が発生したため
tableそのものを複製することで解決しています。(現象はIE8で確認)

...仕事とはいえサポート切れたブラウザ対応は辛いです。