基于jQuery实现table无缝滚动

本篇笔记基于网友的分享基于jQuery实现table无缝滚动,具体效果如下所示:

基于jQuery实现table无缝滚动

原网址:https://www.jq22.com/webqd4722

下面内容是波波改动部分,主要解决了在一个页面中存在多个table滚动时的调用和样式冲突的问题。改动不大,仅供参考。

  1. //参数1 tableID,参数2 div高度,参数3 速度,参数4 tbody中tr几条以上滚动
  2. function tableScroll(tableid, hei, speed, len) {
  3.     var MyMarhq = '';
  4.     clearTimeout(MyMarhq);
  5.     $('#' + tableid).parent().find('.tableid_').remove();
  6.     $('#' + tableid).parent().prepend(
  7.         '<table class="tableid_"><thead>' + $('#' + tableid + ' thead').html() + '</thead></table>'
  8.     ).css({
  9.         /*'position': 'relative',*/
  10.         'overflow': 'hidden',
  11.         'height': hei + 'px'
  12.     })
  13.     /*
  14.     $(".tableid_").find('th').each(function(i) {
  15.         $(this).css('width', $('#' + tableid).find('th:eq(' + i + ')').width());
  16.     });
  17.     */
  18.     //解决多个列表时样式冲突
  19.     $('#' + tableid).siblings(".tableid_").find('th').each(function (i) {
  20.         $(this).css('width', $('#' + tableid).find('th:eq(' + i + ')').width());
  21.     })
  22.     $(".tableid_").css({
  23.         'position': 'absolute',
  24.         'top': 0,
  25.         'left': 0,
  26.         'z-index': 9
  27.     })
  28.     $('#' + tableid).css({
  29.         'position': 'absolute',
  30.         'top': 0,
  31.         'left': 0,
  32.         'z-index': 1
  33.     })
  34.     if ($('#' + tableid).find('tbody tr').length > len) {
  35.         $('#' + tableid).find('tbody').html($('#' + tableid).find('tbody').html() + $('#' + tableid).find('tbody').html());
  36.         $(".tableid_").css('top', 0);
  37.         $('#' + tableid).css('top', 0);
  38.         var tblTop = 0;
  39.         var outerHeight = $('#' + tableid).find('tbody').find("tr").outerHeight();
  40.         function Marqueehq() {
  41.             if (tblTop <= -outerHeight * $('#' + tableid).find('tbody').find("tr").length) {
  42.                 tblTop = 0;
  43.             } else {
  44.                 tblTop -= 1;
  45.             }
  46.             $('#' + tableid).css('margin-top', tblTop + 'px');
  47.             clearTimeout(MyMarhq);
  48.             MyMarhq = setTimeout(function() {
  49.                 Marqueehq()
  50.             }, speed);
  51.         }
  52.         MyMarhq = setTimeout(Marqueehq, speed);
  53.         $('#' + tableid).find('tbody').hover(function() {
  54.             clearTimeout(MyMarhq);
  55.         }, function() {
  56.             clearTimeout(MyMarhq);
  57.             if ($('#' + tableid).find('tbody tr').length > len) {
  58.                 MyMarhq = setTimeout(Marqueehq, speed);
  59.             }
  60.         })
  61.     }
  62. }

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!