jQuery UI 可排序 : get new item position preventing DOM changes

标签 jquery jquery-ui jquery-ui-sortable

我的页面上有一个可排序的列表。我只想知道用户的意图:他拖动什么项目以及在哪里,即拖动元素的旧位置和新(潜在)位置。

但我不希望 jQuery-sortable 真正改变我的 DOM ——我想自己做。这是示例:

$(".sortable-list").sortable({
  items: ".sortable-item",
  stop: function (event, ui) {
    // prevent DOM changes
    $(this).sortable('cancel');
    // get the indices
    var oldIndex = $(this).find('.sortable-item').index(ui.item);
    var newIndex = 'how?'; // this is the question
  }
});

我知道我可以使用 ui.originalPositionui.position 计算新位置,但我相信 jQuery-sortable 已经完成了这项工作,因为它在其中放置了一个占位符一个有效的地方,所以我只想获取该值。

我该怎么做?

最佳答案

嗯,当我写一个问题时,我实际上找到了解决方案。

事实证明,jQuery-sortable 在我调用 $(this).sortable('cancel') 之前确实更改了 DOM。此调用实际上所做的是恢复插件所做的更改。

这是工作代码:

$(".sortable-list").sortable({
  items: ".sortable-item",
  stop: function (event, ui) {
    var newIndex = $(this).find('.sortable-item').index(ui.item);
    $(this).sortable('cancel');  // revert changes
    var oldIndex = $(this).find('.sortable-item').index(ui.item);
  }
});

关于jQuery UI 可排序 : get new item position preventing DOM changes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13530613/

相关文章:

javascript - Uncaught ReferenceError : Gallery is not defined in js

jquery - jqGrid 在创建后根据某些外部数据禁用列排序

jquery - 使用 jquery 上下移动包含元素

jQuery flot ...如何填充样条曲线?

javascript - 当你被放置在一个部分时如何添加类

javascript - jquery sortable 无法读取属性 'top'

javascript - 在 jQuery 中拖放多个 <ul> 元素

javascript - 为什么jQuery或诸如getElementById之类的DOM方法找不到元素?

javascript - 为 Canvas 内的圆设置动画

Jquery 表行可拖动和可排序