【问题标题】:JQueryUI Sortable sortchange event across connected Sortables跨连接的可排序的 JQueryUI 可排序 sortchange 事件
【发布时间】:2012-04-11 17:29:52
【问题描述】:

我需要检测可排序的顺序何时发生变化。无论排序项来自何处,我都需要它来触发更改事件。

但是,ui.sortable 中可能存在缺陷,当从一个已连接的 sortable 拖动到另一个时,该缺陷不会触发该事件。

考虑:

  1. 用户将一个项目从 Sortable#A 拖到 Sortable#B,但还没有放下它。 在 Sortable#A 上触发更改事件
  2. 然后用户在 Sortable#A 中拖动项目以更改排序顺序。 什么都不会触发 示例:http://screencast.com/t/rW4xj485OEc

相反,当用户从同一个 Sortable#A 中开始排序时,Change Event 会在 Sortable#A 上每次触发一次。 http://screencast.com/t/uirpg1E5nA

首先,这似乎是 ui.sortable 中的一个缺陷。其次,有没有人建议我如何得到我的蛋糕并吃掉它?如果需要,我很乐意分叉 ui.sortable。

【问题讨论】:

  • 我猜连接列表上不会发生更改,因为只要您没有移动它,该项目仍然被认为是第一个可排序列表的一部分。您是否尝试过over 事件?你想完成什么?
  • over 仅在初始悬停时触发,该事件实际上已被 Change 事件捕获。在对可排序的顺序进行所有更改期间,我需要做很多事情。我认为您是对的,也许该项目仍被视为原始可排序的一部分。但是,我不同意这有任何意义。当排序或数量发生变化时,ChangeEvent 应该触发。

标签: javascript jquery jquery-ui jquery-ui-sortable


【解决方案1】:

change 事件确实只在连接的 sortable 上触发一次,但每次连接 sortable 上的位置发生变化时,它都会在原始 sortable 上触发。

fiddle

根据您要达到的具体目标,您可以使用事件组合来获取所需的信息:

  • start 告诉您$(ui.item) 的当前可排序。
  • over 告诉您项目被拖入的已连接排序对象 ($(this))。
  • change 告诉您该项目已移入可排序的最后一个 over-ed 或 start-ed。

因此,将项目的当前可排序存储在其数据中,并在 startover 上对其进行修改,并可能在 stop 上将其删除。

我同意你的观点,这应该更容易。

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多