jQueryUI和可排序事件的问题

时间:2010-12-26 22:14:54

标签: jquery-ui jquery-ui-sortable

我正在使用'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

1 个答案:

答案 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

小丑。