如果list在init之前为空,则jQuery sortable与水平列表无法正常工作

如果我在初始化之后将元素添加到列表.sortable它无法正常工作。

参见示例jsFiddle

示例HTML:

 

示例JS:

 $(".container").sortable({ containment: 'parent' }); $(".container").disableSelection(); $(".add-fields").click(function(){ $(".container").append("
sucke
") })

CSS示例:

 .container { height: 30px; width: 100%; background: blue; position: relative; float: left; } .container > div { position: relative; float: left; height: 100%; width: 80px; background-color: red; line-height: 30px; text-align: center; margin: 0; padding: 0; cursor: default; } 

UPDATE

我在http://bugs.jqueryui.com/ticket/7498找到了相关问题

因为this.floating仅在_create中确定,如果从空的sortable开始,则假定它是垂直的。

该jQueryUI错误的解决方法是使用内部元素初始化sortable,然后在初始化后立即将其删除。

HTML:

 
blah

使用Javascript:

 var i = 0; $(".container").sortable({ containment: 'parent' }); $(".container").disableSelection(); $("#test").remove(); $(".add-fields").click(function(){ $(".container").append("
sucke" + (i++) + "
") })

并且一个jsFiddle显示它正在工作。

它对我来说很好..尝试类别div的唯一名称…

 $(".container").sortable({ containment: 'parent' }); $(".container").disableSelection(); $(".add-fields").click(function(){ $(".container").append("
sucke"+Math.round(Math.random()* 100)+"
") })

http://jsfiddle.net/NQMPr/23/

更新..我的坏。 在上面的例子中,我确实在容器中有一个元素。 当我从空开始时,你是对的,div不分类。 道歉…