在一个简单的jquery ui可排序实现中,如果你在return false
事件上有receive
,那么在你做多次拖动之后,有时它会随机恢复这些项:
http://jsfiddle.net/neohunter/c14skcb2/1/
这样做:
1)将一个li从ONE移动到TWO。 2)从三个移动到一个
TWO上的ONE记录又回到了ONE。
这是一个错误吗?它只发生在源场明显空洞时。
答案 0 :(得分:0)
错误是接收功能的返回值。 receive的含义是:当连接的可排序列表中的项目已被放入另一个列表时,将触发此事件。 因此,正确的用法是将其设置为true。 相反,防止默认行为对于像out这样的事件非常有用:
out: function(e, ui) {
if (ui.item.text() == 'One Element') {
return false; // prevent all these elements to move
} else {
return true;
}
$( "ul" ).sortable( {
connectWith: 'ul',
receive: function(e, ui){
return true;
}
});

ul{
min-height: 30px;
border: 1px solid red;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
<h3>One</h3>
<ul>
<li>One Element</li>
<li>One Element</li>
<li>One Element</li>
</ul>
<h3>Two</h3>
<ul>
<li>Two Element</li>
<li>Two Element</li>
</ul>
<h3>Three</h3>
<ul>
<li>Three Element</li>
</ul>
&#13;