【发布时间】:2011-07-29 15:30:28
【问题描述】:
我在一个页面上有几个可排序的表。他们中的大多数是连接的,但一个只能被拖出,而不能被拖出。我似乎无法将项目拖到这些空表之一中。
这是一个 jsFiddle:http://jsfiddle.net/jasonbutz/ZLzU3/2/
编辑:
另外,隐藏<tr> 似乎没有任何帮助。
【问题讨论】:
标签: jquery-ui jquery-ui-sortable
我在一个页面上有几个可排序的表。他们中的大多数是连接的,但一个只能被拖出,而不能被拖出。我似乎无法将项目拖到这些空表之一中。
这是一个 jsFiddle:http://jsfiddle.net/jasonbutz/ZLzU3/2/
编辑:
另外,隐藏<tr> 似乎没有任何帮助。
【问题讨论】:
标签: jquery-ui jquery-ui-sortable
将可排序表的主体与连接列表/表一起使用时,Jquery UI 可排序似乎有问题。实现这一点的另一种方法是将表本身设置为可排序的容器并设置items 是可排序的,在这种情况下,我们只希望tbody 中的tr 而不是thead。这是工作示例:http://jsfiddle.net/ZLzU3/62/
【讨论】:
receive: function(e, ui){ if($('tbody tr',this).length == 0){ ` $(this).find("tbody").append(ui.item); ` } `} 这使得函数更准确。
Xnake 的回答解决了一个问题(非常感谢他),但也创建了一个问题:如果您在两个都有内容的表之间移动项目,则您移动的项目将始终出现在底部您将其添加到的表。如果这是您正在寻找的行为,那很好,但如果不是,您需要替换他的接收处理程序:
function(e, ui)
{
$(this).find("tbody").append(ui.item);
}
与:
function(e, ui)
{
var collection = $(this).find("tbody tr");
if(collection.length < 1)
{
$(this).find("tbody").append(inserted);
}
else
{
$(ui.placeholder).replaceWith(inserted);
}
}
它保留了他对空表的 bug-killing 行为,但在表有项目时保留了小部件的默认行为。
可能有更好的方法来做到这一点;我一直找不到任何令人满意的方法来调用覆盖中的默认功能,这将是理想的。
【讨论】:
我参加聚会有点晚了,但就我而言,我没有表格标题,这对我来说是个问题。另外,我以两种方式实现了这一点。以下是我的做法和为我工作的方式:
https://devstuffs.wordpress.com/2015/07/31/jquery-ui-sortable-with-connected-tables-and-empty-rows/
【讨论】: