JQuery UI Sortable - 将占位符添加到列表中以模拟空白空间

2024-05-08

JQuery UI Sortable 对于没有间隙的列表非常有用,但假设我想渲染有间隙的项目列表,例如

1、2、空、4、5、6、空、8

其中数字表示插槽编号。预期的行为是,如果用户将一个元素拖动到 2 插槽上,则 2 值将被推送到空插槽 3 中,并且用户可以将新元素放入 2 插槽中,而如果将新元素拖动到空 3 槽位时,列表项不会下推,用户只需将新项目放入空 3 槽位即可。希望这是有道理的。

我一直在查看 JQuery UI Sortable 代码,似乎我需要利用更改和接收回调来实现此目的,但是,作为 JQuery/JS 的新手,我不清楚该使用什么添加这些空槽占位符并管理选择列表,这样我就不会用自定义代码破坏排序功能。

任何指示、示例等将不胜感激。

经过一段时间的思考后,我创建了一个 jsFiddle:http://jsfiddle.net/pdHnX/ http://jsfiddle.net/pdHnX/

帮忙解释一下问题。我相信我想要完成的一切都可以在重写的 _rearrange 方法中发生。小提琴代码处理项目替换填充项目的情况,但有一个奇怪的问题,如果将项目从项目列表拖动到填充列表,放下该项目,然后将同一项目拖动到填充列表中,填充列表缩小了1,这是一个问题。

一旦您开始将更多项目拖到填充列表中,就会出现更多问题,但这就是我目前遇到的问题。


我不确定我是否正确理解了你的意思,但这就是我的想法:

http://jsfiddle.net/py3DE/ http://jsfiddle.net/py3DE/

$(".source .item").draggable({ revert: "invalid", appendTo: 'body', helper: 'clone',
    start: function(ev, ui){ ui.helper.width($(this).width()); }                    // ensure helper width
});

$(".target .empty").droppable({ tolerance: 'pointer', hoverClass: 'highlight',
    drop: function(ev, ui){
        var item = ui.draggable;
        if (!ui.draggable.closest('.empty').length) item = item.clone().draggable();// if item was dragged from the source list - clone it
        this.innerHTML = '';                                                        // clean the placeholder
        item.css({ top: 0, left: 0 }).appendTo(this);                                // append item to placeholder
    }
});

假设:

  • 如果您从顶部列表拖动项目 - 它将被“克隆”(原始项目将保留在列表中)
  • 如果您从底部列表中拖动项目 - 它将移动(留下空占位符)
  • 如果您将任何项目放在底部列表的占位符上 - 它将替换占位符
  • 如果您将任何项目放在底部列表的非空占位符/项目上 - 它将替换它
  • 两个列表的大小始终保持相同

让我知道这是否有帮助或者您正在寻找其他东西。 另外解释整个任务(拖动的目的是什么)可能会有所帮助:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JQuery UI Sortable - 将占位符添加到列表中以模拟空白空间 的相关文章

随机推荐

  • 想要从 beanIO 字段名称标签在 csv 中写入标题

    我想在 csv 文件中写入标题 因为我的文本文件不包含任何标题 所以我想从 beanIO 字段名称标签写入它 我有一个 beanIO 有两个流 一个用于读取 另一个用于写入 这是输入文件 文本输入 txt 1 约翰 露 BA xxx1萨姆
  • C++ while 循环优化无法正常工作

    我有这个代码段 include
  • 在 EXCEL 中使用多个表的条件求和

    我有一个表 我试图根据两个参考表的值来填充该表 我有各种不同的项目 类型 1 类型 2 等 每个项目运行 4 个月 并且根据其生命周期的不同时间 花费不同的金额 这些成本计算显示在Ref Table 1 参考表1 Month a b c d
  • 是否可以使用 php 中的 C++ 二进制文件

    是否可以编写一些 C 或 C 代码并编译为二进制文件 然后将这些二进制文件与 php 一起使用 是否也可以使用 C 和 C 编写 php 库 如果是这样 请告诉我该怎么做 PHP 在设计上是模块化的 它由 引擎 和许多扩展组成 其中一些是必
  • Dojo DataGrid (DGrid) 添加复选框列

    我在用DojoDgrid 但是我正在尝试添加一个复选框列 但我不确定该方法 我一直在看的大多数教程都遵循不同的代码结构 我无法创建复选框列 我想创建一个复选框列来选择行 Code 这里还有一个Fiddle http jsfiddle net
  • CodingBat sum67:为什么这个解决方案是错误的?

    我正在解决以下codingbat问题 返回数组中数字的总和 但忽略以 6 开头并延伸到下一个 7 的数字部分 每个 6 后面至少有一个 7 如果没有数字则返回 0 sum67 1 2 2 5 sum67 1 2 2 6 99 99 7 5
  • 从 C++ 文件中删除无用的行

    很多时候 当我调试或重用某些代码时 文件开始获取不执行任何操作的行 尽管它们可能在某一时刻执行了某些操作 像向量和填充然后不再使用之类的东西 定义但从未使用的类 结构 以及声明但从未使用的函数 我知道在很多情况下 其中一些东西并不是多余的
  • 如何通过代码改变Android SlidingDrawer的方向?

    当我从横向模式更改为纵向模式时 我无法找到设置 SlidingDrawer 方向的方法 反之亦然 最初我将 xml 的方向设置为垂直 当手机处于横向模式时 我需要将方向更改为水平 因此我将手柄放在左侧 有人有什么想法吗 我认为按照标准这是不
  • 在 cURL 命令和 postman 中的 Firebase Cloud Messaging 中获取无效令牌

    伙计们 我正在尝试获取有关应用程序实例的信息 并且我还尝试将应用程序实例订阅到 Google Cloud Messaging 主题 但问题是每当我尝试使用server key它给我带来了错误invalid token当我尝试使用web ap
  • 使用 insert into ... select 会导致 select 附近的语法不正确,为什么?

    如何在 INSERT 操作中进行 SELECT insert into tableX a id b id VALUES SELECT service id FROM tableY WHERE id 10 2 但服务器返回语法错误 为什么 S
  • Perl Mongo 查找对象 ID

    你会认为这是一件简单的事情 我有一个集合中的对象 ID 列表 我想根据对象 ID 获取单个记录 谷歌搜索过 但没有任何帮助 所以我有对象 ID 5106c7703abc120a04070b34 my client MongoDB Mongo
  • Python 包?

    好吧 我认为无论我做错了什么 它可能都是显而易见的 但我无法弄清楚 我已经阅读并重新阅读了有关包的教程部分 我唯一能想到的是这不起作用 因为我直接执行它 这是目录设置 eulerproject init py euler1 py euler
  • MySQL CREATE TABLE 语句上的外键错误(错误:150)

    我觉得我已经在一对非常简单的创建表语句上尝试了一切可能的方法 类型匹配 我尝试使用 ENGINE InnoDB 等 但很困惑为什么我收到外键错误 我已经离开 SQL 一段时间了 所以这可能是一个简单的问题 mysql gt CREATE T
  • 如何从 Flutter Web 中的 URL 中删除哈希 (#)

    Flutter Web 项目的默认 URL 定义了包含主题标签的 URL 如下 http localhost 41521 peaple 我想删除这个 如下所示 http localhost 41521 peaple 我怎么解决这个问题 您现
  • 如何验证公钥是由您的私有 CA 颁发的?

    我创建了一个 CA 证书 并用它来颁发公钥 在将来的某个日期 我需要验证加载的证书是否由我的 CA 颁发 如何使用 OpenSSL API c 做到这一点 我已将 verify c 在 openssl apps 中 减少到所需的最少功能 假
  • 如何使用 Relay 发送临时查询?

    我是 Relay 的新手 仍在尝试了解它 根据我的理解 Relay 将查询与组件联系起来 这样 您可以说组件需要从 GraphQL 服务器提供 x y 和 z 据我了解 官方react relay库将在适当的时间分派这些查询 可能是在组件即
  • c - 将 .data 发送到不同的部分

    我想把其中的符号 data为特定 C 文件生成的节并将它们放在不同的节中 例如 mydata 在最终的可执行文件中 例如 normaldata c char my str this should appear in data special
  • 在 Microsoft Sql Server 2008R2 及更高版本上隐藏登录数据库 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 请任何人协助隐藏 sql server 2008R2 或更高版本上的可用数据库 我有一个新的登录用户 已映射到特定数据库 使用特定登录用户登录时 我可
  • 正则表达式匹配非整数?

    尝试创建一个忽略正确整数的正则表达式 1 5 999等 和正斜杠 但在其他所有内容中都找到匹配项 例如 它将找到以下匹配项 test test1 test 1 但忽略了 1 55 7 这是为了模组重写 0 9 我想应该可以解决这个问题 它将
  • JQuery UI Sortable - 将占位符添加到列表中以模拟空白空间

    JQuery UI Sortable 对于没有间隙的列表非常有用 但假设我想渲染有间隙的项目列表 例如 1 2 空 4 5 6 空 8 其中数字表示插槽编号 预期的行为是 如果用户将一个元素拖动到 2 插槽上 则 2 值将被推送到空插槽 3