【发布时间】:2014-05-29 11:31:18
【问题描述】:
我有一个列表,一些带有“排序”类的项目:
<ul id="items">
<li class="sort">ITEM 1 <a href="#" class="fix-position">Fix Position</a></li>
<li class="sort">ITEM 2 <a href="#" class="fix-position">Fix Position</a></li>
<li class="sort">ITEM 3 <a href="#" class="fix-position">Fix Position</a></li>
<li class="sort">ITEM 4 <a href="#" class="fix-position">Fix Position</a></li>
<li>ITEM 5</li>
<li>ITEM 6</li>
<li>ITEM 7</li>
<li>ITEM 8</li>
</ul>
然后,我将列表初始化为可对所有具有“排序”类的项目进行排序。
$("#items").sortable({
items: "li.sort"
});
这很好用,但是,我希望能够修复可排序项目的位置,以便它们不再被拖动。我首先添加了一个按钮以从列表项中删除“排序”类。这是按钮的代码:
$("#items").on("click", ".fix-position", function(e){
e.preventDefault();
$(this).parent().removeClass("sort");
$(this).remove();
});
这确实可以防止其他项目将其用作放置目标,但该项目仍然可以自行拖动。见 JS FIDDLE:http://jsfiddle.net/3Js5u/1/
我也尝试过刷新列表:
$("#items").sortable("refresh");
但这似乎不起作用。
我能想到的唯一其他选择是销毁可排序列表并像这样重新创建它:
$("#items").sortable( "destroy" );
$("#items").sortable({
items: "li.sort"
});
该选项的 JS FIDDLE:http://jsfiddle.net/3Js5u/3/。不确定这是否是最好的方法。任何帮助表示赞赏。谢谢。
【问题讨论】:
-
您正在寻找的东西,已经存在于 jquery UI 文档中。检查链接中的第一个示例。 jqueryui.com/sortable/#items
-
@nightgaunt 我现在得到了答案。没想到将这两个项目结合起来并取消。您的链接也没有显示 2 个组合。
标签: javascript jquery jquery-ui