gpt4 book ai didi

javascript - 使用 jQuery UI 制作具有可调整大小的列和可选择的行的表

转载 作者:搜寻专家 更新时间:2023-10-31 08:49:30 24 4
gpt4 key购买 nike

注意:我最初的问题是我是否应该使用 <div> s 或 <table>用于此任务。我自己找到了答案:<div>如果您有大约 2000 行,s 在 Firefox 和 Chrome 上的速度会慢两倍以上。所以你必须使用 <table>为此。我决定重新编辑我的问题以展示如何做到这一点(使用 jQuery UI 的具有可调整大小的列和可选行的表)。希望它对任何人都有用。

我正在制作一个网络应用程序(主要用于数据输入和内部网使用)。需要以标准方式从 SQL 表中呈现一些数据(行作为行,列作为列),但有一些要求:

  1. 数据以严格格式的 JSON 数组形式接收,需要从 JavaScript 插入。
  2. 列必须可以调整大小。
  3. 行必须是可选的。
  4. 正文必须可滚动,页眉必须位于上方。

部分功能有许多现成的 JavaScript 组件,但最完整的组件臃肿、成本高且存在错误。

因为我已经不得不将 jQuery-ui 用于模态对话框和选项卡,所以我决定尝试使用resizableselectable 效果。我设法使用一些技巧使它们适用于标准 HTML 表格。这是代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type='text/javascript' src='../Scripts/jQuery.js'></script>
<script type='text/javascript' src='../Scripts/jQuery-ui.js'></script>
<link href="../Css/ui-lightness/jquery-ui.css" type="text/css" rel="stylesheet" />
<style type='text/css'>
.selectable .ui-selecting { background: #FECA40; }
.selectable .ui-selected { background: #F39814; color: white; }
.NCList table { table-layout:fixed; }
.nc-cell { overflow: hidden; white-space:nowrap; }
.NCList .ui-resizable-e { background: gray; }
.NCList .y-scroll { overflow-y:auto; overflow-x:hidden; }
</style>

<script type="text/javascript">
$(function() {
var element = $('#MyParentDiv');
$(".selectable", element).selectable({filter: 'tr'});
$(".th0", element).resizable({
alsoResize: '#MyParentDiv .header-container',
stop: function(event, ui) {
var width1 = $(".th0", element).width();
$('.col0', element).width(width1);
width1 = $(".header-container", element).width();
$('.y-scroll', element).width(width1);
},
handles: 'e'});
$(".th1", element).resizable({
alsoResize: '#MyParentDiv .header-container',
stop: function(event, ui) {
var width1 = $(".th1", element).width();
$('.col1', element).width(width1);
width1 = $(".header-container", element).width();
$('.y-scroll', element).width(width1);
},
handles: 'e'});
});
</script>

</head>
<body>
<div id="MyParentDiv" class="NCList">
<div class="header-container" style="width:215px;">
<table><thead><tr>
<th><div class="nc-cell th0" style="width:100px;">
Short name
</div></th>
<th><div class="nc-cell th1" style="width:100px;">
Name
</div></th>
</tr></thead></table>
</div>
<div class="y-scroll" style="max-height:100px;width:215px;">
<table class="valuefield">
<tbody class="selectable">
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
<tr><td><div class="nc-cell col0" style="width: 100px">Some test values</div></td>
<td><div class="nc-cell col1" style="width: 100px">Some test values</div></td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
<html>

最佳答案

纯粹从语义的 Angular 来看,应该在需要呈现数据的地方使用表格。 DIV 更适合展示和构建页面设计。

关于javascript - 使用 jQuery UI 制作具有可调整大小的列和可选择的行的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com