好的,所以我又来了,玩@RubaXa 的Sortable插件(希望他在附近的某个地方,因为这个插件相当复杂......)
一些发现(我花了一些时间才完全理解机制,但我认为我是对的)
情况1
如果我们设置一个div
具有相同类型的内容,它会立即排序。例如:
HTML
<div id="myContainer">
<h3>Item 1</h3>
<h3>Item 2</h3>
</div>
JavaScript
new Sortable(document.getElementById("myContainer"));
演示:http: //jsfiddle.net/b02wfe4o/
案例2
如果我们设置一个div
不同类型的内容(例如h2
s 和h3
s,我们还必须指定draggable
类。例如:
HTML
<div id="myContainer">
<h3 class="myDraggable">Item 1</h3>
<h4 class="myDraggable">Item 2</h4>
</div>
JavaScript
new Sortable(document.getElementById("myContainer"), {
draggable: '.myDraggable'
});
演示:http: //jsfiddle.net/qemz00eq/1/
案例3
如果我们div
并排设置 2 个(或更多),它的工作方式几乎相同。例如:
HTML
<div id="myContainer1">
<h3 class="myDraggable">Item 1.1</h3>
<h4 class="myDraggable">Item 1.2</h4>
</div>
<div id="myContainer2">
<h3 class="myDraggable">Item 2.1</h3>
<h4 class="myDraggable">Item 2.2</h4>
</div>
JavaScript
new Sortable(document.getElementById("myContainer1"), {
draggable: '.myDraggable'
});
new Sortable(document.getElementById("myContainer2"), {
draggable: '.myDraggable'
});
演示:http: //jsfiddle.net/qeyxxj4y/
问题
现在,如果可排序 A 是可排序 B 的子级怎么办?
HTML
<div id="myContainer1">
<h3 class="myDraggable">Item 1.1</h3>
<h4 class="myDraggable">Item 1.2</h4>
<div id="myContainer2">
<h3 class="myDraggable">Item 2.1</h3>
<h4 class="myDraggable">Item 2.2</h4>
</div>
</div>
JavaScript
new Sortable(document.getElementById("myContainer1"), {
draggable: '.myDraggable'
});
new Sortable(document.getElementById("myContainer2"), {
draggable: '.myDraggable'
});
演示:http: //jsfiddle.net/j7fesLkp/8/
好吧,现在这不能按预期工作:
myContainer2
物品可以在其容器内完美移动/分类。这很好。myContainer1
虽然物品也可以移入myContainer2
,但我的意思是将元素1.1放入myContainer2
作品中 - 当两个容器并排时不会发生这种情况。
那么,我们如何才能禁用这种行为呢?我的意思是:每个容器的项目只能在该容器内移动,而不能在其子容器内移动。
怎么可能呢?