jQuery 动态重新初始化/刷新可拖动/可排序元素

标签 jquery dynamic refresh jquery-ui-sortable initialization

我有一些在ready() 事件中加载的函数。这些基本上使列表可拖动,其他区域可放置/可排序。例如。您可以将克隆拖动到多个区域(div 中的列表),并且在这些多个区域中,您可以对它们进行排序/重新排序(但仅限在每个区域内)。这非常有效。

我有一个按钮,可以动态创建一个新区域,以便将项目放入其中,然后进行排序。它完美地创建了新区域,但您无法将项目放入其中,甚至无法使它们可排序。

我意识到这与我使用ready()事件在页面加载时使所有区域可放置/可排序有关,而不是实际动态地重新运行这些函数。

我尝试在按钮的单击功能内的这些元素上使用“刷新”。例如。

$(".field > li").draggable('refresh');
$(".dragrow1, .dragrow2").droppable('refresh');
$(".dragrow1, .dragrow2").sortable('refresh');

但这行不通。如果可以的话,我想避免以任何方式重复我的代码。有办法让这项工作发挥作用吗?我认为如果有类似于“live()”函数的东西可以与“ready()”一起使用,那么这可能是一个解决方案,但没有......!

谢谢。

最佳答案

为什么不将初始化代码编写为您自己的 jQuery 插件?然后你的初始化代码以及添加动态元素的代码就可以这样设置。

jQuery(function() {
  jQuery.fn.myDroppableSetup = function myDroppableSetup() {
    this.each(function() {
      // your setup code here
    });
    return this;
  };
  jQuery.fn.myDraggableSetup = // ...
});

然后,当您动态添加内容时,您可以重复使用它:

$('div.newlyAddedDroppable').myDroppableSetup();

关于jQuery 动态重新初始化/刷新可拖动/可排序元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193006/

相关文章:

Javascript 自动刷新切换复选框

javascript - 谷歌地图API加载灰色 map 而不是 map 图像

c++ - 动态/在执行期间重新定义或添加类成员函数

jquery - 验证失败时如何根据下拉选择显示div

c - 2D 和 3D 数组的动态分配/解除分配

c++ - 通过动态内存管理防止自动变量销毁

java - 在容器页面中提交 <form> 时更新容器页面中的 iframe

reactjs - Gatsby 在生产环境中动态重建静态页面

jQuery slideDown 和 slideUp 子菜单

javascript - 谷歌日历与完整日历 io 同步