我有一个可排序的扑克牌列表。为了只显示卡片的顶部,我给每张卡片一个负的底部边距。一旦我这样做了,jQuery sortable 就会变得非常闪烁且难以使用。我怎样才能消除这个 filcker?在闪烁之上,如何获得正确的垂直对齐方式以进行拖动?似乎我必须在列表的上方或下方移动才能将占位符移动到列表的那些边。
我已将我的代码放在 http://jsfiddle.net/otac0n/wDTwX/ 以便您可以感受一下,但这里是它的要点:
// HTML
<div class="deck" data-bind="sortable: { data: Cards, options: { placeholder: 'card', cursorAt: { left: 5, top: 5 }, tolerance: 'pointer' } }">
<div class="card" data-bind="text: Name, style: { background: Color }"></div>
</div>
// CSS
.deck
{
margin: 10px;
padding: 0 0 130px 0;
}
.card
{
width: 100px;
height: 150px;
border: 1px solid black;
border-radius: 8px;
background: White;
color: White;
margin: 0 0 -130px 0;
padding: 5px;
}
// JS
var vm = {
Cards: ko.observableArray([
{ Name: "Red", Color: "#f00" },
{ Name: "Green", Color: "#0f0" },
{ Name: "Blue", Color: "#00f" },
])
};
ko.applyBindings(vm);
最佳答案
首先,你在那里有一个逃跑的争论。
sortable: { data: Cards,
options: { placeholder: 'card', cursorAt: { left: 5, top: 5 }, }
,tolerance: 'pointer'}
容差应该在选项数组内,所以它不会被拾取:) 即。
sortable: {
data: Cards,
options: {
placeholder: 'card',
cursorAt: { left: 5, top: 5 },
tolerance: 'pointer'
}
}
关于闪烁,在我看来它喜欢它,因为事件通过元素(重叠)冒泡。试着想出一种方法来确保它们只在它们被排序时才被排序:)
编辑:这个问题似乎很相似:Dealing with overlapping jQuery sortable lists
关于jquery - 如何使用可排序的 jQuery UI 消除闪烁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10644816/