我正在使用'Connect list trough tabs'演示。我稍微修改了一下代码。我将'foo'类添加到 tabs-1 和 tabs-2 元素中。 我还添加了以下脚本:
$(".foo ul").sortable({
stop: function (event, ui) {
var tabId = $(this).attr('id');
var elementIndex = ui.item.index();
alert('tab id: ' + tabId + ' | element index: ' + elementIndex);
}});
当我更改相同选项卡中元素的排序顺序时,它工作得非常好,但是当我将元素从第一个选项卡拖放到第二个选项卡(反之亦然)时,我遇到了问题,因为元素首先放在tab1中的第一个位置(tab id = sortable1,element index = 0),之后它被删除到最后一个位置的第二个标签。问题是因为第二次不会触发sortable事件。
我错过了什么,但不知道是什么:) 任何帮助将不胜感激。
谢谢!
编辑:
演示可在以下链接中找到:http://jqueryui.com/demos/sortable/#connect-lists-through-tabs
答案 0 :(得分:1)
你有没有找到答案?因为我目前遇到同样的问题 - 尝试各种方法,但到目前为止还没有成功。
修改强> 的
抓住这个,发现我认为最有效的解决方法。将事件“DOMNodeInserted”绑定到您正在使用的<ul>
列表类,您可以通过搜索其当前的DOM位置来测试列表项:
$(".connectedSortable").bind("DOMNodeInserted", function() {
$('#tabs').find('li#staff-'+currentStaffId).each(function() {
listDeptID = $(this).parent().parent().attr('id');
listDeptID = listDeptID.split('-');
listDeptID = listDeptID[1];
....
在我的这个示例中,我的list列表项的id为staff-x,其id为该staff成员,因此find返回一个数组元素,并且运行效率非常高。
HTH
小丑。