【问题标题】:Sortable not working with different height columns可排序不适用于不同高度的列
【发布时间】:2013-03-17 21:37:11
【问题描述】:

我正在使用这个库:HTML5 Sortable Drag and Drop

我将它用于块,2 列宽。它的标记:

<ul class="sortable grid">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li style="height: 200px;">Item 4</li>
    <li>Item 5</li>
    <li>Item 6</li>
    <li style="height: 200px;">Item 7</li>
    <li>Item 8</li>
</ul>

我有一个问题。当某些块有不同的高度时,我需要以某种方式清除第二个块之后的float,以免弄乱布局。

这里有一个现场工作演示http://jsfiddle.net/jasondavis/4njSE/6/,如果有人有任何想法。我尝试使用 Odd li 列表项上的选择器执行 .sortable&gt;:nth-child(odd) {clear:left},这在外观上很明智,但它会破坏拖放的功能,当您放下项目时,它们不会进入正确的位置这样做。

此 JSFiddle 显示它与添加的 .sortable&gt;:nth-child(odd) {clear:left} 一起使用 http://jsfiddle.net/jasondavis/4njSE/7/

还有什么想法?我现在很茫然。

我还尝试将每组 2 个块包装在自己的容器中,这会有所帮助,但是由于库将 dragable 添加到容器 div 中,因此拖放无法正常工作。

这是目标的图像,它的外观:

【问题讨论】:

标签: jquery css drag-and-drop jquery-ui-sortable


【解决方案1】:

我们开始吧:

首先 - working jsfiddle example

基本上,我在插件中添加了两个事件回调:onStartDragonEndDrag。它们依次调用addFloats 函数,这是一个简单的函数,负责将浮点数添加到不是 sortable-dragging 元素的奇数元素(这不能用纯CSS 实现)。我们还必须在调用可排序插件时调用该函数,但仅此而已。

享受:)

【讨论】:

  • 嘿,非常感谢,这离我想要的更近了一步。正如您可能注意到的那样,它仍然有一个奇怪的行为,我认为如果占位符类与被移动的框具有相同的高度,它会更好。在 JS 中,我看到它有一个部分,我认为它应该这样做,但显然这在默认代码中不起作用。你会碰巧知道如何解决这个问题吗?感谢您的贡献,谢谢!
  • 完成。看看placeholder.css("height",$(this).height()+"px");
  • 嘿,你太棒了,你帮助我非常好,我更像是一个 PHP 编码器。如果您从codedevelopr.com/screenshots/2013-03-18_16-34-40.png 这个位置开始,然后像codedevelopr.com/screenshots/2013-03-18_16-35-52.png 这样将第 3 项移动到右列,而不是显示在右列中的占位符,它会显示在左列中......只是一个奇怪的问题。我不确定这是否可以修复此代码的工作方式。我不指望你能解决所有问题,但也许你可以告诉我这是否可能。非常感谢您的帮助,将您的答案标记为最佳
  • 很高兴为您提供帮助!当然,我添加了另一个调用相同方法的处理程序onChangeOrderonChangeOrder: function(){addFloats($(".sortable"))} 。这样,每次在拖动中更改顺序时,浮动也会得到整理。这对你有用吗?
  • 你好,这使它更接近完美,非常了不起的工作,很遗憾我不能一遍又一遍地投票,哈哈。它并不完美,由于块大小不同,这里和那里有一些小故障,但我相信这比我开始的要好得多,非常感谢
【解决方案2】:

添加这个 CSS:

.sortable>:nth-child(odd) {clear:left}

【讨论】:

  • 您好,我试过这个,但它弄乱了拖放功能顺序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 2023-01-20
  • 2021-05-07
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多