【发布时间】:2014-02-05 03:28:42
【问题描述】:
总结:
我将jquery UI sortable 与两个表并排使用(使用连接列表),效果很好,除非其中一个表没有行,我无法将另一表中的一行拖到“空”表上我想知道这是否受支持或是否需要解决方法?
详情/代码:
我有两张桌子相互排成一排(简化示例)
<table id="table1" style="float:left;width:260px;">
<thead><tr><th>Id</th><th>Name</th></tr></thead>
<tbody class=sortable>
<tr><td>1</td><td>Name 1</td></tr>
<tr><td>2</td><td>Name 2</td></tr>
<tr><td>3</td><td>Name 3</td></tr>
</tbody>
</table>
<table id="table2" style="float:left;width:260px;">
<thead><tr><th>Id</th><th>Name</th></tr></thead>
<tbody class=sortable>
<tr><td>1</td><td>Name 1</td></tr>
<tr><td>2</td><td>Name 2</td></tr>
<tr><td>3</td><td>Name 3</td></tr>
</tbody>
</table>
我有以下 jquery UI 可排序代码:
$(".sortable").sortable({
connectWith: ".sortable",
placeholder: "ui-state-highlight",
helper: function(e, tr)
{
var $originals = tr.children();
var $helper = tr.clone();
$helper.children().each(function(index)
{
// Set helper cell sizes to match the original sizes
$(this).width($originals.eq(index).width());
});
$helper.css("background-color", "rgb(223, 240, 249)");
return $helper;
}
});
$("#sortable").disableSelection();
这是我的 CSS:
<style type="text/css">
.ui-state-highlight { height: 1.5em; line-height: 1.2em; }
.ui-sortable-helper {
transform: rotate(1deg);
-moz-transform: rotate(1deg);
-webkit-transform: rotate(1deg);
}
</style>
如果其中一个表碰巧没有行,我不能再将一行拖到该表上。当我查看萤火虫时,即使没有行,我仍然可以看到 TBODY,所以我不确定出了什么问题?
更新:
正如 Anton 所说,这似乎在 Chrome 中有效,但在任何其他浏览器中都无效(我也需要在其他浏览器中工作)
更新 #2:
我使用 display:block 让它工作(并且必须更新我的表格的一些样式)。我现在唯一的问题是,当您悬停时,这些空表上的突出显示行不是全宽(我猜是因为显示:块)。这是一个屏幕截图,您可以在其中看到黄色的可排序悬停不是整行。这不是一个阻止程序,但如果它与有行的情况一致,它看起来会更好。
【问题讨论】:
-
在jsfiddle.net/xhMj8 的 chrome 中工作正常,但我只是在 firefox 中测试过它并不起作用,似乎是跨浏览器问题
-
是的,我一直在 Firefox 和 IE 中进行测试,但在任何一个中都不起作用。 .有什么建议吗?
-
也许其他浏览器有问题检测到您实际上是在悬停表格?尝试给桌子(或者可能是tbody)一个
min-height
标签: javascript jquery jquery-ui html-table jquery-ui-sortable