我有一张可分类的扑克牌清单。为了显示牌的顶部,我给每张牌一个负底线。一旦我这样做,jQuery可排序变得非常闪烁并且难以使用。我怎样才能消除这个傻瓜呢? 在闪烁的顶部,我如何获得适当的垂直对齐拖动?看来我必须在列表的上方或下方行,才能将占位符移动到列表的那一边。
我已将我的代码放在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);
答案 0 :(得分:5)
我也在挣扎着一个闪烁的可分类。注意到它只在2种情况下闪烁:
connectWith
选项<ul>
标签)有一个高度或其他任何类似<div style="clear:both">
的强制它有一个高度。另一方面,如果连接的UL没有高度,我们实际上不能丢弃其中的任何内容。但是只要UL达到高度,它就会闪烁。所以我把高度只有10px而且效果很好。如果这不起作用,请尝试使用overflow:visible或overflow:隐藏在UL的父级上。希望它有所帮助。
更新:
如果有多行商品,则无效。我可以通过这样做来解决这个问题:
over:function(event,ui){$('#my_sortable_list')。css('overflow','visible'); }
然后
stop:function(){$('。selector_for_all_sortable_lists')。css('overflow','hidden'); }
两个连接列表上的内容
答案 1 :(得分:2)
在我的实际案例中,答案是使用overflow: visible
而不是负边距来获得重叠效果。
这神奇地使一切都有效!
答案 2 :(得分:0)
首先,你有一个失控的论点。
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'
}
}
关于闪烁,在我看来它似乎是因为事件正在通过元素(重叠)冒泡。尝试并提出一种方法,确保它们只有在以下情况下才能进行排序:)