2010-09-02 90 views
3

我正在尝试制作一个非常简单的网格插件。当我想允许用户更改列顺序时,我的问题就开始了(不对表格行进行排序,例如改变第一列以显示在表格的右侧)。我正在使用jQuery UI排序,但我发现当用户开始拖动时,jquery ui在thead中添加了一个新的th。这使得最后一个(桌子右边的那个)水平地离开桌子!如何使用jQuery UI进行排序来排序第二行?

当我拖动我拖动的时候,添加的th被删除,但是在Chrome中,最后一个(移动到右边,离开表格)不会回到表格中。在IE和FF中,它确实回到了表格中,但拖动效果非常好。

我的代码:

table.find("thead>tr").sortable({ 
    axis: "x", 
    placeholder: "ui-state-highlight", 
    handle: ".sortable", 
    start: function(event, ui) { 
     /* I'm doing some stuff */ 
    }, 
    update: function(event, ui) { 
     /* I'm doing some stuff */ 
    } 
}); 

对不起,事先我的英语不好,谢谢。

迭戈

更新:

如有岗位不明确告诉我,我会尽力去改变它。谢谢!

回答

3

我遇到了同样的问题,最后找到了解决方法。基本上,JQuery UI Sortable在第一次创建时会检查元素的方向。但是,如果元素中没有任何项目,它将永远不会被视为水平元素。解决方法是每次将项目放入它时销毁并重新创建可排序对象。

http://www.judeosborn.com/post/5751510741/jquery-sortable-droppable-orientation-problem

我汇报这一问题向开发者以及:

http://bugs.jqueryui.com/ticket/6702#comment:15

1

问题#1:铬(即webkit浏览)错误尚未固定的,但在这里是: - http://bugs.jqueryui.com/ticket/4765

问题#2:可排序使用轴: 'X',是与jQuery 1.8提高.12,但仍然有一个错误,可以防止它检测到该轴:'x'被指定。我在这里提交了解决方案: - http://bugs.jqueryui.com/ticket/6702

+0

不,我不得不使用ul,但我没有关闭这个问题,因为我想知道如何去做。 – Diego 2011-04-26 15:56:38

1

不是一个解决方案(还),但黑客攻击:具体的代码可以在我的博客上找到

$var.sortable({ 
    placeholder: '.my-placeholder' 
}); 

css: 
.my-placeholder { 
    display: none; 
} 

我现在正在寻找在特定事件期间隐藏占位符或试图有条件地显示它。我会更新,如果我得到任何地方,但这个黑客有点停止'额外列'的问题。

+0

谢谢orolo,我会试试看。如果您提前预约,请更新您的答案。 – Diego 2011-09-08 19:13:21