亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery中關于ScrollableGridPlugin.js(固定表頭)插件的使用逐步解析

2019-11-20 14:21:05
字體:
來源:轉載
供稿:網友

這個ScrollableGridPlugin.js是從網上找到的一個具有固定表頭效果的插件,使用起來灰常的簡便,而且效果也是看著不錯的。不過畢竟不是量身定做的,所以有的地方在自己的項目中還是要進行一點點小改動,因為實在是太喜歡這個插件了,所以第一次進到里面,看看原作者的思路和寫法,然后才能知道如何去改成適合自己項目。

對于js我完全是一個非常業余的選手,下面根據自己的現狀對這個插件做了分析,反正自己是搞明白怎么回事了,有分析不對的,還請高手指教。

/*!* This plug-in is developed for ASP.Net GridView control to make the GridView scrollable with Fixed headers.*/(function ($) {  $.fn.Scrollable = function (options) {//1、定義一個jQuery實例方法,也是我們調用這個插件的入口    var defaults = {      ScrollHeight: 300,      Width: 0    };    var options = $.extend(defaults, options); //2、擴展集合,如果外部沒有傳入ScrollHeight的值,就默認使用300這個值,如果傳入,就用傳入的ScrollHeight值    return this.each(function () {      var grid = $(this).get(0);//3、獲取當前gridview控件的對象      var gridWidth = grid.offsetWidth;//4、獲取gridview的寬度      var headerCellWidths = new Array();      for (var i = 0; i < grid.getElementsByTagName("TH").length; i++) {        headerCellWidths[i] = grid.getElementsByTagName("TH")[i].offsetWidth;      }//5、創建了一個存儲表頭各個標題列的寬度的數組      grid.parentNode.appendChild(document.createElement("div"));//6、在文檔中gridview的同級位置最后加一個div元素      var parentDiv = grid.parentNode;//7、gridview的父節點,是個div      var table = document.createElement("table");//8、在dom中創建一個table元素      for (i = 0; i < grid.attributes.length; i++) {        if (grid.attributes[i].specified && grid.attributes[i].name != "id") {          table.setAttribute(grid.attributes[i].name, grid.attributes[i].value);        }      }//9、把gridview的所有屬性加到新創建的table元素上      table.style.cssText = grid.style.cssText;//10、將樣式也加到table元素上      table.style.width = gridWidth + "px";//11、為table元素設置與gridview同樣的寬      table.appendChild(document.createElement("tbody"));//12、為table元素加一個tbody元素      table.getElementsByTagName("tbody")[0].appendChild(grid.getElementsByTagName("TR")[0]);//13、把gridview中的第一行數據加到tbody元素中,即table里現在存著一行gridview的標題元素,同時在gridview里刪除了標題這一行的元素      var cells = table.getElementsByTagName("TH");//14、取得表格標題列的集合      var gridRow = grid.getElementsByTagName("TR")[0];//15、gridview中第一行數據列的集合      for (var i = 0; i < cells.length; i++) {        var width;        if (headerCellWidths[i] > gridRow.getElementsByTagName("TD")[i].offsetWidth) {//16、如果標題格的寬度大于數據列的寬度          width = headerCellWidths[i];        }        else {//17、如果標題格的寬度小于數據列的寬度          width = gridRow.getElementsByTagName("TD")[i].offsetWidth;        }        cells[i].style.width = parseInt(width - 3) + "px";        gridRow.getElementsByTagName("TD")[i].style.width = parseInt(width - 3) + "px";//18、將每個標題列和數據列的寬度均調整為取其中更寬的一個,-3是出于對表格的樣式進行微調考慮,不是必須      }      parentDiv.removeChild(grid);//19、刪除gridview控件(注意只是從文檔流中刪除,實際還在內存當中,注意27條),現在的情況是table里只有一個表頭      var dummyHeader = document.createElement("div");//20、在文檔中再創建一個div元素      dummyHeader.appendChild(table);//21、把表頭table加入其中      parentDiv.appendChild(dummyHeader);//22、把這個div插入到原來gridview的位置里      if (options.Width > 0) {//23、如果我們最初傳入了一個想要的表格寬度值,就將gridWidth賦上這個值        gridWidth = options.Width;      }      var scrollableDiv = document.createElement("div");//24、再創建一個div      gridWidth = parseInt(gridWidth) + 17;//25、在原基礎上+17是因為這是一個具有滑動條的table,當出現滑動條的時候,會在寬度上多出一個條的寬度,為了使數據列與標題列保持一致,要把這個寬度算進行,17這個值也不是必須,這個可以試驗著來。      scrollableDiv.style.cssText = "overflow:auto;height:" + options.ScrollHeight + "px;width:" + gridWidth + "px";//26、給具有滾動條的div加上樣式,height就是我們想讓它在多大的長度時出現滾動條      scrollableDiv.appendChild(grid);//27、將gridview(目前只存在數據存在數據列)加到這個帶有滾動條的div中,這里是從內存中將grid取出      parentDiv.appendChild(scrollableDiv);//28、將帶有滾動條的div加到table的下面    });  };})(jQuery);

只有弄明白插件內部是怎么回事,才能知道如何去修改。

其實這里有個地方我還是不太明白,baidu之后也沒能弄明白,希望明白的朋友能告訴一下,就是13和15這兩個地方都用了grid.getElementsByTagName("TR")[0]);這條語句,從表面上看應該是得到的同一個tr吧?但是我通過瀏覽器去跟蹤的時候,發現13里調用的,得到的是grid的第一個tr,就是包含th列的標題tr,15里的也是grid里的第一個tr,但是包含的是td列的第一條數據列tr。

怪就怪在執行完13后,grid里tr數少了1,就是少了包含th列的tr。我以為是appendChild方法是轉移元素進行插入,而不是復制元素進行插入,但是通過查這個方法并沒有明確說明是我想的那么回事。我就有些懵了。

這個插件的調用方法如下,感興趣的朋友可以使用試試,感覺真的非常好。

  <script type="text/javascript" src="../Scripts/PlugIn/ScrollableGridPlugin.js"></script>  <script type="text/javascript">    jQuery(document).ready(function () {      jQuery("#<%=gv_bugList.ClientID %>").Scrollable({        ScrollHeight: 400,        width: 500      });    })  </script>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产热re99久久6国产精品| 久久视频精品在线| 搡老女人一区二区三区视频tv| 亚洲欧美一区二区三区情侣bbw| 在线观看亚洲视频| 欧美亚洲在线观看| 国产一区二区三区18| 亚洲欧美激情在线视频| 国产精品一二三在线| 国产精品久久久久不卡| 亚洲人成电影网站色www| 亚洲成人国产精品| 91精品国产777在线观看| 最近2019年日本中文免费字幕| 国产在线一区二区三区| 亚洲欧美中文日韩v在线观看| 精品国产一区久久久| 国产精品视频xxx| 国产精品高潮视频| 日韩电视剧在线观看免费网站| 欧美在线一区二区三区四| 日韩电影在线观看中文字幕| 亚洲免费av网址| 成人欧美在线视频| 中文字幕av一区中文字幕天堂| 亚洲欧美日韩区| 中文字幕免费国产精品| 国产精品亚洲аv天堂网| 欧洲成人在线视频| 亚洲欧美中文字幕| 久久激情五月丁香伊人| 欧美一区二区三区……| 成人网在线免费看| 国产999精品久久久影片官网| 国产亚洲欧美视频| 日韩av在线免费看| 精品视频久久久久久久| 日韩中文字幕欧美| 91香蕉国产在线观看| 51久久精品夜色国产麻豆| 国产在线播放91| 97在线免费观看| 麻豆国产精品va在线观看不卡| 91chinesevideo永久地址| 懂色aⅴ精品一区二区三区蜜月| 日韩在线观看成人| 亚洲国产精品国自产拍av秋霞| 欧美一区二区三区精品电影| 亚洲人成电影在线播放| 久久久国产精彩视频美女艺术照福利| 97免费中文视频在线观看| 亚洲国产精品yw在线观看| 亚洲影视九九影院在线观看| 国产精品夜色7777狼人| 欧美肥老太性生活视频| 91精品国产99| 色青青草原桃花久久综合| 日韩av一区在线观看| 亚洲激情国产精品| 91久久久久久国产精品| 国产精品毛片a∨一区二区三区|国| 日韩精品中文在线观看| 国产欧美婷婷中文| 亚洲欧美在线x视频| 日本精品性网站在线观看| 2019国产精品自在线拍国产不卡| 欧美日韩国产丝袜另类| 国产精品爽黄69天堂a| 在线日韩日本国产亚洲| 亚洲精品丝袜日韩| 成人黄色av播放免费| 日韩欧美国产一区二区| 亚洲欧美在线磁力| 26uuu久久噜噜噜噜| 91精品久久久久久久久久| 久久久精品一区二区三区| 国产999精品| 一道本无吗dⅴd在线播放一区| 69久久夜色精品国产7777| 国产精品久久久久久久久久ktv| 欧美视频二区36p| 国产精品九九九| 欧美性受xxx| 国产大片精品免费永久看nba| 日韩av影视综合网| 欧美成人自拍视频| 欧美性生活大片免费观看网址| 国产欧美日韩高清| 国产综合视频在线观看| 在线播放国产一区二区三区| 亚洲自拍偷拍福利| 红桃视频成人在线观看| 成人观看高清在线观看免费| 免费91在线视频| 一区二区在线视频| 欧美极品美女电影一区| 91丝袜美腿美女视频网站| 亚洲精品日韩丝袜精品| 欧美亚洲另类激情另类| 国产精品嫩草视频| 欧美专区在线视频| 7777kkkk成人观看| 国产精品狠色婷| 欧美色播在线播放| 91网站免费看| 久久精品亚洲国产| 亚洲无av在线中文字幕| 欧美理论电影在线观看| 欧美视频精品一区| 亚洲最新av网址| 日韩电影中文字幕在线| 在线成人一区二区| 欧美日韩中国免费专区在线看| 97在线视频免费看| 欧美成人午夜激情在线| 欧美一区在线直播| 欧美激情视频在线| 日韩欧美一区二区在线| 日韩亚洲成人av在线| 一级做a爰片久久毛片美女图片| 国产丝袜一区视频在线观看| 欧美性生交xxxxxdddd| 欧美裸身视频免费观看| 久久91精品国产91久久久| 欧洲成人在线视频| 欧美成人午夜剧场免费观看| 亚洲精品视频在线播放| 91在线网站视频| 精品视频一区在线视频| 国产精品第3页| 欧美重口另类videos人妖| 日韩动漫免费观看电视剧高清| 日韩免费观看视频| 久久精品国产精品亚洲| 欧美激情欧美激情在线五月| 国产精品美女主播在线观看纯欲| 亚洲欧美国产日韩天堂区| 欧美一乱一性一交一视频| 欧美性感美女h网站在线观看免费| 另类视频在线观看| 色综合久久久久久中文网| 日韩欧美国产成人| 国产精品久久91| 视频一区视频二区国产精品| 91精品在线国产| 国产精品日韩欧美综合| 久久手机精品视频| 92版电视剧仙鹤神针在线观看| www.日韩系列| 精品成人69xx.xyz| 久久久在线视频| 日本成人免费在线| 久久九九全国免费精品观看| 久久99热精品这里久久精品| 久久综合电影一区| 久久精品在线视频| 午夜精品视频在线| 国产亚洲xxx| 日本精品免费观看| 狠狠综合久久av一区二区小说| 久久久久久久久久久人体| 亚洲欧洲国产伦综合| 亚洲男人天堂2019| 中文字幕视频在线免费欧美日韩综合在线看|