表列resize/拖放’n’在jQuery中删除

我正在寻找一种方法来实现resize和使用jQuery在预定义表中的列(而不是行)之间拖放’n’。 我已经做了一些谷歌搜索并没有真正找到适合该法案的任何东西,因为许多人要求你基本上使用jQuery重建你的表。 我只是想插入这个function,而不是让我的整个表结构由第三方决定。

有没有人知道任何可能帮助我这样做的插件,如果没有,是否有任何jQuery专家已经解决了这个问题?

所以我认为你对一个现有的网格插件如jqGrid不感兴趣? 我建议查看他们的实现,以了解他们如何拖放列。

我没有具体的代码来执行此操作,但这是我对如何解决问题的初步想法。

调整列的大小

我会使用css table-layout: fixed使用

标签table-layout: fixed以定义列宽。 这样你的jquery代码只需要在一个地方改变宽度值,列中的所有单元格都会调整宽度。

 ...

使用CSS将不可见的窄div浮动到每个标题单元格的右侧:

Title

。 这个

成为你的缩放器句柄,你可能希望在它上面有CSS来改变hover时的鼠标光标。 您甚至可以使用CSS向右轻推它,使其与列之间的边界重叠。

然后将jQuery UI可拖动行为应用于该div。 拖动div时,请适当更新

宽度。 你如何resize将取决于你的需求,可能需要一些数学。

或者,当拖动不可见的div时,您可以将其转换为绝对定位的窄div,该div增加到表的高度。 拖动鼠标时需要移动它,并使其可见以指示要调整列的大小。 然后,一旦完成resize,您将重新计算

大小并应用它们,将高度更改回仅适合

,并使其不再可见。

拖放列

这可能比较棘手。 我首先将可拖动的行为应用于

元素。 上面描述的

元素内的

可能具有可放置的行为。 这样,您可以将任何列拖到其中一个div上并将其放在它们上面。 当列拖动到div的顶部时,div应该变为可见,并且可能是列的高度。

一旦用户将列标题放到其中一个缩放器栏div上,您就需要循环遍历表的每一行并将相应的

移动到正确的位置。 不要忘记移动相应的

我希望这会让你前进。 如果你看起来足够努力的话,我肯定会有某些例子。 但是大多数网格控件确实具有比实际使用更多的function,听起来你宁愿保持简单。

UPDATE

我只是做了一个快速的谷歌搜索,发现了这个插件 。 我还没有看过源代码,但是从演示中看,它看起来像我建议采用类似的方法。 它似乎做了这个工作,但在我看来它看起来不太漂亮。 缩放器栏不符合您的预期等等。 但它可能有所帮助。