2013-05-12 23 views
2

我想创建一个由ul内的一些li元素组成的行,所以我使用了jquery 1.9.1和jquery ui。一切工作正常,但有一些与我的预期不同。事实上,当您尝试拖动“Container 4”并将其放到“Container 3”位置时,网格会发生变化,由四行组成。拖放后保持三行布局的问题

我想保持网格在原来的三行布局。

任何想法?

http://jsfiddle.net/ussy1649/j2K86/

+1

好像正确的行为给我。容器#4是其他容器(包括容器#3)的宽度的两倍。将容器#4拖放到容器#3顶部(即交换位置)时,没有足够的空间来容纳容器#4,因此它只是流向下一行,而前面的#3插槽保持为空。再次,逻辑看起来不错。 – carrabino 2013-05-12 20:55:24

+0

你是完全正确的,它是完美的逻辑,我知道这一点。但我希望使用任何技巧来保持3行布局。例如,不允许“容器4”替代“容器3”位置或“容器”5“位置,您知道......只是不创建新的行。 – Ussy1649 2013-05-13 06:40:42

回答

0

一种方法是,告诉排序忽略使用id =“特殊”的李,加入这一行:

items: 'li[id!=special]' 

它并不完美,因为它可以防止同一行与排序#4,但它会部分解决更大的问题。您的代码看起来就像这样:

$(function() { 

    $("#sortable").sortable({ 
     placeholder: "placeholder", 
     forcePlaceholderSize: true, 
     tolerance: 'pointer', 
     revert: true, 
     cursor: 'move', 
     items: 'li[id!=special]' 
    }); 
    $("#sortable").disableSelection(); 
}); 

工作小提琴: http://jsfiddle.net/j2K86/3/