正在删除可排序列表中只有已排除项目的项目
Dropping an item on a sortable list that only has excluded items
我有几个可排序的列表连接在一起,所以我可以从一个列表中拖动一个项目并将其放入另一个列表。每个列表的底部都有一个项目,既不可排序,也不是投递目标,因此无法投递下面的任何项目。
这就是预期用途,我希望每个列表底部的排除项目始终位于底部。
问题是,如果我清空一个列表,比如我拖出它的所有项目并将它们放在另一个列表中,那么剩下的就是不可排序的项目。如果我把一个新项目拖到它里面,它会一直拖到底部,在我的不可排序、不可丢弃的目标项目下面。
当将一个新项目放入只有一个不可排序项目的可排序列表时,是否有可能将其放置在列表的顶部
示例代码:
$('.segment ol').sortable({
connectWith: '.segment ol',
distance: 25,
items: 'li:not(.disabled)'
});
HTML:
<div class="segment">
<ol>
<li>word word word</li>
<li>word word word</li>
<li class="disabled">must stay at bottom</li>
</ol>
</div>
<div class="segment">
<ol>
<li class="disabled">must stay at bottom</li>
</ol>
</div>
如果将"word word word"li拖到另一个列表中,它将被附加在禁用的li下面。
您可以在可排序列表上使用"receive"事件(当您提供选项时),并执行以下操作:
$('.segment ol').sortable({
connectWith: '.segment ol',
distance: 25,
items: 'li:not(.disabled)',
over: function(event,ui){ ui.placeholder.insertBefore($(this).children('li.disabled:first')); }
});
这将使当前拖动的元素预先放置在列表中(除非先克隆项目,否则prepend和prependTo将有效地移动项目)。
这可能更倾向于破解,但您可以在每个0px高或display: none
的列表顶部添加一个可排序项目。这将强制项目在该项目之后进行排序,而不是您的不可排序项目。
<ol>
<li class="hidden"></li>
<li>word word word</li>
<li>word word word</li>
<li class="disabled">must stay at bottom</li>
</ol>
CSS:
.hidden {
display: none;
}
http://jsfiddle.net/HPM7V/2/
相关文章:
- 正在将数据主题添加到所有项目
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何检查管道中未定义的项目
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 学生搜索项目jquery/javascript
- 如何获取不属于我项目的上一页的URL
- Sencha Touch构建-排除文件
- Dojo:访问dijit.form.Select中单击的项目
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 我需要为我的朋友在这个项目上提供帮助
- 如何从 HTML 查询中删除项目
- 在Meteor项目中安装并包含npm模块后出错
- 如何从AngularJS ng repeat中排除项目
- 使用 localstorage.clear() 但排除 1 个项目
- 查找一个项目是否在数组中,并使用angularjs将其从选择选项中排除
- 正在删除可排序列表中只有已排除项目的项目
- 在排序之前,从部分复选框列表中排除项目
- 排除订单上的项目
- 排除项目及其内容元素
- 从使用下划线的项目中排除下划线(browserify)