【问题标题】:Sortable with dynamic content可使用动态内容排序
【发布时间】:2017-10-26 10:08:05
【问题描述】:

所以我使用 jQuery UI 可排序插件对一个小画廊中的照片进行排序。

$(function() {
  $("#area").sortable({
    items: '.sort-wrapper',
    cursor: "move",
    handle: ".photo-handler",
    opacity: 0.5,
    scroll: true,
    scrollSensitivity: 100,
    scrollSpeed: 5,
    revert: 100,
    tolerance: "pointer",
    update : function () {
      var order = $('#area').sortable('serialize');
      $.ajax({
      type : 'POST',
      url : '/file.php',
      data : order
    });
  }
}).disableSelection();

在同一页面上,我动态添加和删除照片。 PHP 脚本返回带有 div 的 HTML 代码,带有图像链接和按钮“删除”和“移动”(可排序的处理程序)。

例子:

<div class="sort-wrapper">
  <a href="photo001.jpg"><img src="photo001m.jpg" alt=""></a>
  <button type="button" class="remove-this-photo">Remove</button>
  <button type="button" class="photo-handler">Move</button>
</div>

当我从#area 添加新文件或删除文件时,可排序停止工作。我一直在寻找解决方案,找到了sortable('refresh') 方法,但它对我不起作用。

#area 中添加新照片的脚本非常标准。我使用$.ajax({}).done.fail.always 方法。 我在开始上传新文件时设法使用sortable('destroy') 方法,并在上传完成后执行以下操作:

.always(function() {
  $("#area").sortable();
});

上面的代码使#area 再次可排序,但我必须再次复制所有设置以按照我的方式配置它。 动态内容加载后如何绑定 sortable 使其工作或如何将所有设置存储在sortable() 之外并能够在同一页面上再次使用?

【问题讨论】:

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


    【解决方案1】:

    如果您向可排序元素添加新内容,则需要刷新已初始化的实例。为此,请致电refresh option,如下所示:

    .always(function() {
      $("#area").sortable('refresh');
    });
    

    【讨论】:

    • 我试过了,还是不行。没有错误,控制台中没有警告。没有。我认为问题可能是因为我没有使用任何函数向#area 添加/附加内容。动态内容来自 PHP 脚本,该脚本添加/删除文件,然后 echo 添加到相册用户正在编辑的所有照片(HTML 结构)。我见过sortable('refresh') 的示例,所有这些示例都基于在 JS/jQuery 中使用 append 或类似函数添加内容。
    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多