10

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

参见示例jsFiddle

示例 HTML:

<div class="container">
</div>
<br />
<button class="add-fields">add</button>

示例 JS:

$(".container").sortable({
    containment: 'parent'   
});

$(".container").disableSelection();

$(".add-fields").click(function(){
    $(".container").append("<div>sucke</div>")   
})

示例 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;
}

更新

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

因为 this.floating 只在 _create 中确定,如果你从一个空的 sortable 开始,它被认为是垂直的。

4

2 回答 2

6

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

HTML:

<div class="container"><div id="test">blah</div>
</div>
<br />
<button class="add-fields">add</button>

Javascript:

var i = 0;

$(".container").sortable({
    containment: 'parent'   
});
$(".container").disableSelection();
$("#test").remove();

$(".add-fields").click(function(){
    $(".container").append("<div>sucke" + (i++) + "</div>")   
})

还有一个jsFiddle显示它正在工作。

于 2013-10-01T02:19:53.207 回答
0

它对我来说工作正常.. 尝试类别 div 的唯一名称...

$(".container").sortable({
    containment: 'parent'     
});

$(".container").disableSelection();

$(".add-fields").click(function(){
    $(".container").append("<div>sucke"+Math.round(Math.random()* 100)+"</div>")   
})

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

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

于 2013-10-01T02:09:29.313 回答